自动化持续集成,监控重复持续的工作

原理图

jenkins配合gitlab实现代码自动上线 - 图1

硬件需求

两台服务器
最小256MB内存, 推荐512MB以上。
10GB硬盘空间, 用于安装Jenkins,您的Docker镜像和容器。

安装

rpm包官网地址:https://mirrors.jenkins.io/redhat/

安装jdk环境

  1. #上传jdk包并解压配置环境变量
  2. tar -zxvf jdk-8u281-linux-x64.tar.gz
  3. #配置环境变量
  4. vim /etc/profile
  5. JAVA_HOME=/java/jdk1.8.0_291
  6. PATH=$JAVA_HOME/bin:$PATH
  7. CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
  8. export PATH JAVA_HOME CLASSPATH
  9. #刷新环境变量
  10. source /etc/profile

安装Jenkins rpm包

  1. #下载rpm包
  2. wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.99-1.1.noarch.rpm
  3. #安装依赖
  4. yum -y install epel-release && yum -y install daemonize
  5. #上传rpm包并进行安装
  6. rpm -ivh jenkins-2.99-1.1.noarch.rpm
  7. #修改配置文件java路径
  8. vim /etc/init.d/jenkins
  9. candidates= 里面加入一行配置Java的路径 /java/jdk1.8.0_291/bin/java
  10. #配置Jenkins的启动用户
  11. vim /etc/sysconfig/jenkins
  12. 参考:JENKINS_USER="root"
  13. #配置Jenkins的端口号,默认会与tomcat冲突
  14. vim /etc/sysconfig/jenkins
  15. 参考:JENKINS_PORT="8888"
  16. #重载系统配置信息,启动Jenkins
  17. systemctl daemon-reload && systemctl start jenkins
  18. #查看默认密码
  19. cat /var/lib/jenkins/secrets/initialAdminPassword
  20. #建议登陆上系统先修改默认密码
  21. #提示插件安装失败解决 修改/var/lib/jenkins/updates/default.json
  22. sudo sed -i 's#updates.jenkins.io/download/plugins#mirrors.tuna.tsinghua.edu.cn/jenkins/plugins#g' default.json
  23. sudo sed -i 's#www.google.com#www.baidu.com#g' default.json
  24. sudo sed -i 's#https://mirrors.tuna.tsinghua.edu.cn#http://mirrors.tuna.tsinghua.edu.cn#g' default.json
  25. systemctl restart jenkins

卸载Jenkins

  1. # rpm卸载
  2. rpm -e jenkins
  3. # 检查是否卸载成功
  4. rpm -ql jenkins
  5. # 彻底删除残留文件 -iname忽略大小写
  6. find / -iname jenkins | xargs rm -rf && find / -name jenkins*” | xargs rm -rf

Jenkins主要的目录

  1. /usr/lib/jenkins/ #jenkins安装目录,WAR包会放在这里
  2. /etc/sysconfig/jenkins #jenkins配置文件,端口,JENKINS_HoME等都可以在这里配置
  3. /var/lib/jenkins #默认的ENKINS_HoME
  4. /var/log/jenkins/jenkins.log #Jenkins日志文件
  5. /var/lib/jenkins/plugins #jekins插件路径
  6. /var/lib/jenkins/workspace #构建项目后的工作路径

本地载入Jenkins插件

  1. #将Jenkins插件文件放到/var/lib/jenkins/plugins目录下
  2. #重载文件并重启jenkins
  3. systemctl daemon-reload && systemctl restart jenkins

利用shell脚本配合Jenkins自动构建完成代码上线

shell脚本

将本机的git目录文件打包,上传并解压到web服务器,制作软连接html指向,完成代码上线

  1. #!/bin/bash
  2. Time=`date "+%F-%H-%M-%S"`
  3. ip=192.168.31.238
  4. html_dir='/usr/local/nginx'
  5. jenkins_backup_dir='/var/lib/jenkins/workspace/freestyle-job/'
  6. cd $jenkins_backup_dir && tar -zcf /tmp/web-${Time}.tar.gz ./*
  7. scp /tmp/web-${Time}.tar.gz $ip:$html_dir
  8. rm -rf /tmp/web-${Time}.tar.gz
  9. ssh root@$ip "cd $html_dir && mkdir web-$Time && rm -rf html"
  10. ssh root@$ip "cd $html_dir && tar -zxf web-${Time}.tar.gz -C ./web-$Time"
  11. ssh root@$ip "cd $html_dir && ln -s web-${Time} html && rm -rf web-${Time}.tar.gz"

Jenkins配置自动gitlab push自动触发器

  1. 1.gitlab添加上Jenkins主机的ssh公钥
  2. 2.Jenkins新建一个item自由风格的项目
  3. #以下是项目的配置
  4. 1.丢弃旧的构建 一般设置保留天数7 最大保留构建个数10
  5. 2.源码管理选择git,地址复制gitlab中的项目地址,例:git@192.168.31.163:test/dzp.git
  6. 3.构建触发器 参考下图
  7. 4.gitlab选择对应项目的集成钩子,配置上Jenkins对应的触发器参数,如下图
  8. 5.gitlab配置完成以后可以在对应的Webhooks里点test测试对应的事件,出现网页返回状态码为200则成功
  9. 6.构建选择 Execute shell 执行shell脚本,输入命令:sh /server/scripts/zdts.sh
  10. 7.保存即可

jenkins配合gitlab实现代码自动上线 - 图2

jenkins配合gitlab实现代码自动上线 - 图3

Jenkins配置触发器返回值返回到gitlab上

  1. 1.gitlab上用户设置里面配置一个access token 如下图
  2. 2.Jenkins上系统设置里面配置对应的gitlab参数 如下图
  3. 3.选择 ADD Jenkins 创建并使用对应gitlabapi
  4. 4.选择完毕后可以点下Test Connection 测试连通性 没问题就确认
  5. 5.Jenkins选择对应项目 配置 构建后的操作
  6. 选择Publish build status to GitLab commit(GitLab 1+required) 将状态信息返回给gitlab
  7. 6.保存

jenkins配合gitlab实现代码自动上线 - 图4

jenkins配合gitlab实现代码自动上线 - 图5

jenkins配合gitlab实现代码自动上线 - 图6

jenkins配合gitlab实现代码自动上线 - 图7

gitlab上查看Jenkins的返回信息

jenkins配合gitlab实现代码自动上线 - 图8