自动化持续集成,监控重复持续的工作
原理图
硬件需求
两台服务器
最小256MB内存, 推荐512MB以上。
10GB硬盘空间, 用于安装Jenkins,您的Docker镜像和容器。
安装
rpm包官网地址:https://mirrors.jenkins.io/redhat/
安装jdk环境
#上传jdk包并解压配置环境变量
tar -zxvf jdk-8u281-linux-x64.tar.gz
#配置环境变量
vim /etc/profile
JAVA_HOME=/java/jdk1.8.0_291
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH
#刷新环境变量
source /etc/profile
安装Jenkins rpm包
#下载rpm包
wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.99-1.1.noarch.rpm
#安装依赖
yum -y install epel-release && yum -y install daemonize
#上传rpm包并进行安装
rpm -ivh jenkins-2.99-1.1.noarch.rpm
#修改配置文件java路径
vim /etc/init.d/jenkins
在 candidates= 里面加入一行配置Java的路径 /java/jdk1.8.0_291/bin/java
#配置Jenkins的启动用户
vim /etc/sysconfig/jenkins
参考:JENKINS_USER="root"
#配置Jenkins的端口号,默认会与tomcat冲突
vim /etc/sysconfig/jenkins
参考:JENKINS_PORT="8888"
#重载系统配置信息,启动Jenkins
systemctl daemon-reload && systemctl start jenkins
#查看默认密码
cat /var/lib/jenkins/secrets/initialAdminPassword
#建议登陆上系统先修改默认密码
#提示插件安装失败解决 修改/var/lib/jenkins/updates/default.json
sudo sed -i 's#updates.jenkins.io/download/plugins#mirrors.tuna.tsinghua.edu.cn/jenkins/plugins#g' default.json
sudo sed -i 's#www.google.com#www.baidu.com#g' default.json
sudo sed -i 's#https://mirrors.tuna.tsinghua.edu.cn#http://mirrors.tuna.tsinghua.edu.cn#g' default.json
systemctl restart jenkins
卸载Jenkins
# rpm卸载
rpm -e jenkins
# 检查是否卸载成功
rpm -ql jenkins
# 彻底删除残留文件 -iname忽略大小写
find / -iname jenkins | xargs rm -rf && find / -name “jenkins*” | xargs rm -rf
Jenkins主要的目录
/usr/lib/jenkins/ #jenkins安装目录,WAR包会放在这里
/etc/sysconfig/jenkins #jenkins配置文件,端口,JENKINS_HoME等都可以在这里配置
/var/lib/jenkins #默认的ENKINS_HoME
/var/log/jenkins/jenkins.log #Jenkins日志文件
/var/lib/jenkins/plugins #jekins插件路径
/var/lib/jenkins/workspace #构建项目后的工作路径
本地载入Jenkins插件
#将Jenkins插件文件放到/var/lib/jenkins/plugins目录下
#重载文件并重启jenkins
systemctl daemon-reload && systemctl restart jenkins
利用shell脚本配合Jenkins自动构建完成代码上线
shell脚本
将本机的git目录文件打包,上传并解压到web服务器,制作软连接html指向,完成代码上线
#!/bin/bash
Time=`date "+%F-%H-%M-%S"`
ip=192.168.31.238
html_dir='/usr/local/nginx'
jenkins_backup_dir='/var/lib/jenkins/workspace/freestyle-job/'
cd $jenkins_backup_dir && tar -zcf /tmp/web-${Time}.tar.gz ./*
scp /tmp/web-${Time}.tar.gz $ip:$html_dir
rm -rf /tmp/web-${Time}.tar.gz
ssh root@$ip "cd $html_dir && mkdir web-$Time && rm -rf html"
ssh root@$ip "cd $html_dir && tar -zxf web-${Time}.tar.gz -C ./web-$Time"
ssh root@$ip "cd $html_dir && ln -s web-${Time} html && rm -rf web-${Time}.tar.gz"
Jenkins配置自动gitlab push自动触发器
1.gitlab添加上Jenkins主机的ssh公钥
2.Jenkins新建一个item自由风格的项目
#以下是项目的配置
1.丢弃旧的构建 一般设置保留天数7 最大保留构建个数10
2.源码管理选择git,地址复制gitlab中的项目地址,例:git@192.168.31.163:test/dzp.git
3.构建触发器 参考下图
4.gitlab选择对应项目的集成钩子,配置上Jenkins对应的触发器参数,如下图
5.gitlab配置完成以后可以在对应的Webhooks里点test测试对应的事件,出现网页返回状态码为200则成功
6.构建选择 Execute shell 执行shell脚本,输入命令:sh /server/scripts/zdts.sh
7.保存即可
Jenkins配置触发器返回值返回到gitlab上
1.gitlab上用户设置里面配置一个access token 如下图
2.在Jenkins上系统设置里面配置对应的gitlab参数 如下图
3.选择 ADD Jenkins 创建并使用对应gitlab的api
4.选择完毕后可以点下Test Connection 测试连通性 没问题就确认
5.在Jenkins选择对应项目 配置 构建后的操作
选择Publish build status to GitLab commit(GitLab 1+required) 将状态信息返回给gitlab
6.保存