Linux 搭建 Jenkins
环境准备
安装JDK
安装 JDK 之前写过一篇文章,本文就不具体讲了:
注意:Java版本不能是gcj
,会导致Jenkins有问题,centos7搭建jenkins小记文章中提到的java版本问题导致CentOS下的Jenkins有问题。
安装Git
yum install git
规避磁盘过满问题
1.方法1:创建软连接,准备较大空间
/data
挂在了较大空间,然后在其中创建相关目录:
mkdir -p /data/jenkins
ln -s /data/jenkins/ /var/lib/jenkins
chown -R root:root /data/jenkins
2.方法2:丢弃构建
设置构建最大保留天数或者保留个数,实现自动删除构建结果。
参考:
CentOS
离线安装-推荐
## http://pkg.jenkins-ci.org/redhat-stable/
wget http://pkg.jenkins-ci.org/redhat/jenkins-2.39-1.1.noarch.rpm ## 下载(也可以Windows下载再转过来)
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key ## 导入公钥,发现离线安装,不需要导入公钥就能安装
rpm -ih jenkins-2.7.2-1.1.noarch.rpm
自动安装完成之后:
/usr/lib/jenkins/jenkins.war
WAR包/etc/sysconfig/jenkins
配置文件/var/lib/jenkins/
默认的JENKINS_HOME目录/var/log/jenkins/jenkins.log
Jenkins日志文件
在线安装
# 添加Jenkins源
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum repolist # Update your package manager list to get the latest packages
# 安装
yum install java-1.8.0-openjdk jenkins
service jenkins start # 启动
基于Tomcat安装
- 在Tomcat官网下载tar包
- 将tar包拷贝至
/usr/local
目录并解压:cd /usr/local/ && tar zxvf apache-tomcat-9.0.12.tar.gz
- 访问jenkins官网下载长期维护版本的
jenkins.war
拷贝至/usr/local/apache-tomcat-9.0.12/webapps
,启动tomcat:`cd /usr/local/apache-tomcat-9.0.12 - 访问:
http://IP:8080/jenkins
管理员密码访问:
cat /root/.jenkins/secrets/initialAdminPassword
基于这种方式安装的Jenkins位置处于/root/.jenkins
,因此,为了避免Job占用空间过大,需要执行如下命令创建软连接:
ln -s /data/jenkins_jobs/ /root/.jenkins/jobs
Jenkins设置
为了不因为权限出现各种问题,这里直接使用root
## sudo vim /etc/sysconfig/jenkins
JENKINS_USER="root" ## 原值 "jenkins" 必须修改,否则权限不足
JENKINS_PORT="8080" ## 原值 "8080" 可以不修改
修改目录权限
chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins
Jenkins 启动
启动Jenkins:
sudo systemctl enable jenkins # 开机自启动Jenkins
sudo systemctl start jenkins # 启动Jenkins
查看服务细节:
systemctl status jenkins.service
验证Jenkins Server访问链接:
telnet IP 8080
如果访问有问题,需要把防火墙关了:
systemctl stop firewalld
systemctl disable firewalld.service #重启不自动开启
通过如下两个命令查看防火墙是否关闭:
systemctl list-unit-files|grep firewalld.service
iptables -t nat -S
Centos安装参考:
- How to install Jenkins on CentOS 7
- Jenkins 持续集成综合实战
- CentOS 7 安装 Jenkins-提到配置权限
- 以root用户运行jenkins中shell命令
- CentOS 安装 Jenkins
Ubuntu
- 下载
https://pkg.jenkins.io/debian/jenkins.io.key
apt-key add jenkins.io.key
以上两步,可以合二为一:
wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
apt-get update
apt-get install jenkins
/etc/init.d/jenkins start
。或者service start jenkins
。启动Jenkins。- 通过:
http://{ip}:8080
访问jenkins。
cat /var/lib/jenkins/secrets/initialAdminPassword
得到默认密码填入下面的密码框中
安装好之后,可以修改相关配置改变默认端口:
/etc/default/jenkins
Ubuntu安装参考:
- how to change port number for Jenkins installation In Ubuntu 12.04
- How to install Jenkins on Ubuntu 16.04
Jenkins master优化
增加同时打开文件句柄数
增加同时打开文件句柄数,linux默认一个进程能同时打开的文件句柄是1024个,在jenkins master肯定是不够的,需要调整成65535
CentOS系统,修改/etc/security/limits.conf
,在文件最后增加一行:
root - nofile 65535
重启后生效,可以通过命令ulimit -a
查看
设置tomcat 日志循环,限制日志的大小
Jenkisn配置
Jenkins用户
admin账号初始密码:
cat /var/lib/jenkins/secrets/initialAdminPassword
Jenkins使用
Jenkins关闭、重启、重载
http://localhost:8080/[exit/restart/reload]
参考:
Jenkins Job指定执行节点
- 关联job,进入job的配置页面,勾选
Restrict where this project can be run
利用了标签的功能
参考:
Jenkins升级
可以通过系统管理(System management)--> 系统信息(System Info)查找.war
的文件
executable-war /usr/lib/jenkins/jenkins.war
先列出官网地址:https://jenkins.io/download/
升级之前,停止Jenkins服务(记得备份原来的jenkins.war,以防万一)
http://jenkinsIP:port/exit
从官网下载最新的war包,然后替换掉上面路径下的war。
替换完成后,重启:
systecmctl start jenkins # centos
service jenkins start # ubunutu
参考:
Jenkins插件
- dashboard view:Dashboard-view自定义jenkins任务集视图
- Workspace Cleanup:这个插件可以再每次build之前清空workspace
- Monitoring:监控一些机器的状态信息了
- Folders:新建任务时,支持创建文件夹,可嵌套地定义文件夹来级别 views / jobs
- SSH Slaves:添加节点时,可以采用SSH方式链接;
- PostBuildScript:根据 Build 状态执行脚本
- Post Build Task
- Pipeline:必须 【请勾选】
- Build Pipeline:用于创建pipline视图
- Configuration Slicing:主要功能是可以批量设置job的属性,比如设置保留多少天的构建记录,神器之一,有效解决Jenkins磁盘过满的问题
- Multijob:配置Multijob必备的插件;
- Timestamper
- Build Timeout plugin:构建超时插件
- Custom Tools
- Git:Git插件 【请勾选】
- Git Parameter
- GitLab
- Gitlab Hook
- Gitlab Authentication
- Parameterized Trigger plugin:插件可以让你在构建完成时触发新的Job构建,并以各种方式为新Job构建指定参数。
- Node and Label parameter
- Publish Over SSH
- Groovy plugins:并发任务解决
- Windows Slaves Plugin:连接Windows Slaves,默认安装了
- Matrix Authorization Strategy Plugin:矩阵形式认证策略插件,默认安装了
插件使用参考:
- jenkins常用一些插件
- thoughtworks-第二话:Jenkins必备插件安装
- Jenkins常用插件介绍
- 小团队持续集成之实践【6】 - Jenkins - 安装与插件篇
- Jenkins持续集成平台搭建
Jenkins Slave
Slave机器上需要安装好git、配置好Java环境(尤其是一些类似JAVA_HOME的变量)。
通过SSH连接node--推荐
- 先安装
SSH Slaves
插件,这样在新增节点时,ssh配置将更加友好。 - 点击
Credentials
, 点击Jenkins
->Global credentials
->Add Credentials
,Username
和Password
表示执行机的账号和密码。 - 新建节点,「启动方式」 选择
Launch slave agents via SSH
。Credentials
选择刚刚新建的钥匙,Host Key Verification Strategy
选择Manually trusted Key Verification Stragegy
。
最后Launch agent
即可;
通过JNLP连接node
该方法比较麻烦,不详细介绍了。
注意:需要下载两个文件到agent机器上:
agent.jar
slave-agent.jnlp
参考:
Jenkins FAQ
Q1: 忽略Jenkins升级提醒
对于轻微强迫症的我来说,看着升级提醒,还不能叉掉,实在忍不了,Google之后,有解决方法:
Manage Jenkins => Configure System => Administrative monitors configuration
系统管理-》系统设置-》管理监控配置
去掉“Jenkins更新通知”
UnCheck "Jenkins Update Notification" and apply
Q2: Cannot run program "java": error=2, No such file or directory
虽然登录到master机器或者执行机上,java
都配置好了,但是仍然遇到了错误,后来看到一篇博客中提到的方法,在usr/bin
下创建了一个Java的软连接,就解决了。
ln -s /usr/java/jdk1.8.0_171/bin/java /usr/bin
Q3: jenkins.JenkinsException: Error in request. Possibly authentication failed [500]: Internal Server Error
在JJB项目中,发生了上面的错误,定位问题了半天,发现可能是Jenkins本身出问题了,而不是项目出问题。以前运行OK的Jenkins怎么突然发生这个问题了呢?可能是如下原因造成:
var/lib/jenkins/jobs
:目录下Job占据过多空间。在Jenkins中的节点管理里查看master机器的
剩余磁盘空间`也可以观察到。
du -ah --max-depth=1
/etc/rc.local
是啥?
参考:
Q4: starting jenkins bash /usr/bin/java permission denied
解决办法主要分了两步:
- 将原本位于
/root/buildbox/javaxxx/
下的目录移到了/usr/java/
下,重新配置java环境; - 在
vim /etc/init.d/jenkins
中的candidates
字段补充上java路径/usr/java/jdk1.8.0_151/bin/java
。
参考:
Q5: 执行Jenkins服务器界面运行一段时间后就会卡死,界面显示空白
原因:tomcat的日志(/home/apache-tomcat-8.0.30/logs)查看catalina.out日志,得知是java虚拟机内存空间溢出。
解决:到后台tomcat的bin目录下,修改 tomcat的启动脚本:startup.sh,在最上面添加 export JAVA_OPTS=“-XX:MaxPermSize=1024m -Xms1024m -Xmx3096m”
Q6: 构建完成后需要清除workspace
需要安装“Workspace Cleanup Plugin插件”,在构建任务配置时,可以在“增加构建后操作步骤”中选择Delete workspace when build is done
Q7: Linux环境变量问题,没有加载/etc/profile文件,获取不到需要的环境变量。
添加节点时,Prefix Start Slave Command
选择输入 source /etc/profile &&
加一个前置动作。注意&&
之后要有空格!!!
Q8:Jenkins定时构建用法
Q9:Error 403 No valid crumb was included in the request
- jenkins 出现“Error 403 No valid crumb was included in the request ”的解决方案https://blog.csdn.net/wanglin_lin/article/details/73849146
Q10:Jenkins Master-Slave: Key exchange was not finished, connection is closed
挂载执行机时,报错,通过编辑 /etc/sshd_config
文件,注释 MACs 和 Kex 所在的行,解决了问题,记得注释之后,systemctl restart sshd
。
Q11:清理过期的 Jobs
#clear jenkins jobs logs
@hourly find /var/lib/jenkins/jobs/ -mindepth 1 -maxdepth 1 -mtime +30 -type d -exec rm -rf {} \; -o -type f -exec rm -rf {} \;
参考:
说明
博客原文:CICD-Jenkins搭建笔记一
Linux 搭建 Jenkins的更多相关文章
- linux 搭建jenkins+创建maven工程JOB
1.linux 安装jenkins 网上搜到这样安装 sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redh ...
- 【Jenkins】Linux搭建Jenkins平台
为了配合上一篇的ant+jenkins做持续集成,需要在linux环境下搭建一个jenkins平台.网上有很多安装的例子,我主要记录一下自己遇到的问题,真真的是特别惆怅的,每次我遇到的问题都格外多. ...
- 一、linux搭建jenkins+github详细步骤
事情缘由: 现在在做的主要工作是通过jenkins+postman实现api的自动化测试,想要达到的效果是,api自动化测试定时跑脚本的同时,github有新的代码提交,jenkins会自动检测部署新 ...
- linux搭建jenkins+github详细步骤
事情缘由: 现在在做的主要工作是通过jenkins+postman实现api的自动化测试,想要达到的效果是,api自动化测试定时跑脚本的同时,github有新的代码提交,jenkins会自动检测部署新 ...
- Linux搭建Jenkins
1.添加存储库 yum的repo中默认没有Jenkins,需要先将Jenkins存储库添加到yum repos,执行下面的命令: 使用wget -O下载并以不同的文件名保存 [root@besttes ...
- linux 搭建jenkins
一.什么是持续集成? (1)Continuous integration(CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也就意味着每天可能会发生多次集 ...
- linux 搭建 jenkins 前端自动构建时,老是提示 sh: vue-cli-service: command not found
如题. 在 shell 里面执行 env 发现一个 NODE_ENV=production 的环境变量,是这个东西的原因. 通过 unset NODE_ENV 命令去掉这个环境变量就可以了 ...
- Linux下Jenkins服务器搭建
系统环境 操作系统:CentOS6.9 java jdk:java 8 Jenkins版本:jenkins-2.78-1.1.noarch.rpm 关闭防火墙 注意:如果是基于msbuild构建.ne ...
- Linux下Jenkins+git+gradle持续集成环境搭建
Linux下Jenkins+git+gradle持续集成环境搭建 来源:IT165收集 发布日期:2014-08-22 21:45:50 我来说两句(0)收藏本文 一.项目介绍 和 linux ...
随机推荐
- EL语言表达式 (二)【EL对数据的访问】
一.访问方式: EL中访问数据和Java中访问数组的方式相同,即可以通过“[]”和“.”运算符进行访问.而且两种形式是等价的.如: 访问JavaBean对象userInfo中的id属性,可以写成下面两 ...
- laravel架构
1.Laravel 5.1 中的异常处理器和HTTP异常处理实例教程 http://laravelacademy.org/post/1867.html 2.laravel 集成sentry,sentr ...
- spring boot 知识点
spring boot 好处 1. 简化配置,spring boot 提供了默认配置 例如 日志 默认logback日志 info级别 2. 简化部署,内嵌容器,tomcat,jetty,直接部署j ...
- 5.JVM的内存区域划分
一.JVM介绍 1. 什么是JVM? JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟 ...
- Yii restful api跨域
问题:NO 'Access-Control_Allow-Origin' header is present on the requested resource. 解决方案 <?php names ...
- html5-select和datalist元素
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- hdu5029 树链剖分 + 线段树
将树映射在线段上进行操作 然后每个 重链变成一个连续的区间 #include <iostream> #include <cstdio> #include <strin ...
- C#回调浅析(委托、接口回调)
https://wenku.baidu.com/view/ed724173bd64783e08122b2f.html
- Java8的CompletionService使用与原理
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/ShiJiaqi. https://www.cnblogs.com/shijiaqi1066/p/1045423 ...
- leaflet:调用arcgis切片地图服务
var mymap = L.map('mapid').setView([31.59, 120.29], 7); L.tileLayer('http://map.geoq.cn/ArcGIS/rest/ ...