环境准备

安装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安装参考:

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安装参考:

Jenkins master优化

增加同时打开文件句柄数

增加同时打开文件句柄数,linux默认一个进程能同时打开的文件句柄是1024个,在jenkins master肯定是不够的,需要调整成65535

CentOS系统,修改/etc/security/limits.conf,在文件最后增加一行:

root             -       nofile          65535

重启后生效,可以通过命令ulimit -a查看

设置tomcat 日志循环,限制日志的大小

https://stackoverflow.com/questions/8342336/how-to-set-maximum-number-of-rolls-and-maximum-log-size-for-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 Slave

Slave机器上需要安装好git、配置好Java环境(尤其是一些类似JAVA_HOME的变量)。

通过SSH连接node--推荐

  • 先安装SSH Slaves插件,这样在新增节点时,ssh配置将更加友好。
  • 点击 Credentials, 点击 Jenkins -> Global credentials -> Add CredentialsUsernamePassword 表示执行机的账号和密码。
  • 新建节点,「启动方式」 选择 Launch slave agents via SSHCredentials 选择刚刚新建的钥匙,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

解决办法主要分了两步:

  1. 将原本位于/root/buildbox/javaxxx/下的目录移到了/usr/java/下,重新配置java环境;
  2. 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定时构建用法

Jenkins定时构建

Q9:Error 403 No valid crumb was included in the request

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搭建笔记一

最新文章

  1. iOS的ATS配置 - 2017年前ATS规定的适配
  2. FFmpeg 官方 20160227 之后 追加 libmfx 无法在 xp 上运行的解决方法
  3. 【转帖】ios上取得设备唯一标志的解决方案
  4. 回朔法/KMP算法-查找字符串
  5. Linux 信号量 生产者消费者小例题
  6. 如何将java代码生成一个bat文件
  7. Hadoop Datanode节点无法启动(All directories in dfs.data.dir are invalid)
  8. Spring、控制反转与依赖注入(概念)
  9. jquery mobile自己定义webapp开发实例(一)——前言篇
  10. 【js数据结构】栈解决括号不匹配问题
  11. Linq to SQL 中实现模糊查询
  12. Spring WebFlux开门迎客,却来了一位特殊客人
  13. Icehouse 创建Instance代码分析
  14. 因子分析factor analysis_spss运用_python建模(推荐AAA)
  15. 20165232 预备作业3 Linux安装及学习
  16. V-rep学习笔记:转动关节2
  17. HDFS--大数据应用的基石
  18. [转]gdb调试多进程和多线程命令
  19. 转:在eclipse中 使用7.0及以上手机进行测试时logcat不打印日志的解决办法
  20. iOS - App Extension 整体总结

热门文章

  1. activity bj draw 流程图
  2. caffe训练模型中断的解决办法(利用solverstate)
  3. while练习题
  4. html5-表单的综合实例
  5. 师大校赛D coloring Game 并查集
  6. django migrate无效的解决方法
  7. SLAM学习笔记 - 世界坐标系到相机坐标系的变换
  8. 1.python虚拟环境的安装-用以同时使用py2,py3
  9. Collections集合工具类的方法
  10. nodejs typescript怎么发送get、post请求,如何获取网易云通信token