自动化持续集成,监控重复持续的工作
原理图
硬件需求
两台服务器
最小256MB内存, 推荐512MB以上。
10GB硬盘空间, 用于安装Jenkins,您的Docker镜像和容器。
安装
rpm包官网地址:https://mirrors.jenkins.io/redhat/
安装jdk环境
#上传jdk包并解压配置环境变量tar -zxvf jdk-8u281-linux-x64.tar.gz#配置环境变量vim /etc/profileJAVA_HOME=/java/jdk1.8.0_291PATH=$JAVA_HOME/bin:$PATHCLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jarexport 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"#重载系统配置信息,启动Jenkinssystemctl daemon-reload && systemctl start jenkins#查看默认密码cat /var/lib/jenkins/secrets/initialAdminPassword#建议登陆上系统先修改默认密码#提示插件安装失败解决 修改/var/lib/jenkins/updates/default.jsonsudo sed -i 's#updates.jenkins.io/download/plugins#mirrors.tuna.tsinghua.edu.cn/jenkins/plugins#g' default.jsonsudo sed -i 's#www.google.com#www.baidu.com#g' default.jsonsudo sed -i 's#https://mirrors.tuna.tsinghua.edu.cn#http://mirrors.tuna.tsinghua.edu.cn#g' default.jsonsystemctl 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目录下#重载文件并重启jenkinssystemctl daemon-reload && systemctl restart jenkins
利用shell脚本配合Jenkins自动构建完成代码上线
shell脚本
将本机的git目录文件打包,上传并解压到web服务器,制作软连接html指向,完成代码上线
#!/bin/bashTime=`date "+%F-%H-%M-%S"`ip=192.168.31.238html_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_dirrm -rf /tmp/web-${Time}.tar.gzssh 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 最大保留构建个数102.源码管理选择git,地址复制gitlab中的项目地址,例:git@192.168.31.163:test/dzp.git3.构建触发器 参考下图4.gitlab选择对应项目的集成钩子,配置上Jenkins对应的触发器参数,如下图5.gitlab配置完成以后可以在对应的Webhooks里点test测试对应的事件,出现网页返回状态码为200则成功6.构建选择 Execute shell 执行shell脚本,输入命令:sh /server/scripts/zdts.sh7.保存即可


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




gitlab上查看Jenkins的返回信息

