环境准备
1.成功搭建出Gitlab页面
2.成功搭建出Jenkins页面
3.上两步搭建过程在上两文件有详细教程
2.成功搭建出Jenkins页面
3.上两步搭建过程在上两文件有详细教程
一、Gitlab项目准备
1.新建项目,需要在gitlab上建个项目,可以创建也可以导入项目
2.这里导入在gitee码云上找的一个项目仓库
仓库地址:https://gitee.com/kangjie1209/monitor
3.gitlab填写导入仓库地址信息
4.导入仓库项目成功
二、创建Jenkins任务
1.新建一个ltem任务
2.填写任务名称和构建一个自由风格的软件项目
三、填写任务设置参数
1.项目描述及构建过期天数和个数
在丢弃的构建打勾,并且天数填写7天,个数10个即可
2.参数化构建过程
增加两个参数,字符参数和选项参数。
选项参数是指在构建的时候可以自定义选择发布项目或者回滚项目
字符参数是指可以在回滚的时候指定某个编号进行回滚
选项参数是指在构建的时候可以自定义选择发布项目或者回滚项目
字符参数是指可以在回滚的时候指定某个编号进行回滚
3.源码管理设置
选择Git选项(前提:如果没有这个选项则没有Git插件,去找我另一个博文写的Jenkins安装有详细介绍插件安装)
复制gitlab的项目仓库地址,粘贴到URL中,如果有红色报错则执行他提示的命令,如下图所示
有提示输入yes即可
复制gitlab的项目仓库地址,粘贴到URL中,如果有红色报错则执行他提示的命令,如下图所示
有提示输入yes即可
给Gitlab设置公钥,Jenkins免密拉取gitlab仓库项目
Jenkins创建秘钥、生成公钥
Jenkins创建秘钥、生成公钥
粘贴到SSH Keys中
执行报错命令、发放公钥完成之后,重新输入URL就不会报错了
4.构建触发器,创建钩子
选择第四个打勾,然后点击高级
(1)复制URL
(2)生成token
(3)复制token
(2)生成token
(3)复制token
到Gitlab项目中,点击integrations选项,粘贴URL和token,增加web钩子
点击test — Push推送测试,如果成功会返回successfully 200的成功样式(如下图)
5.构建,执行命令
执行脚本的命令,脚本代码如下所示
需要给客户端免密传输公钥
需要给客户端免密传输公钥
[root@jenkins ~]# mkdir -p /server/scripts [root@jenkins ~]# vim /server/scripts/deploy_rollback.sh [root@jenkins ~]# cat /server/scripts/deploy_rollback.sh #!/bin/bash Wep_Ip='10.0.0.7' Code_Dir=/usr/share/nginx/html Old_Code_Dir=/code/${JOB_NAME}_${BUILD_NUMBER} #判断旧的代码目录是存在 ssh root@$Wep_Ip "[ -d $Old_Code_Dir ] || mkdir -p $Old_Code_Dir" case $Status in Deploy) echo "当前选择${Status}版本!" #将旧的代码移动到旧的代码目录中 ssh root@${Wep_Ip} "mv -f $Code_Dir/* $Old_Code_Dir" #将新获取的代码推送到代码目录中 scp -rp $WORKSPACE/* root@${Wep_Ip}:$Code_Dir echo "代码发布完成!" ;; Rollback) echo "当前选择${Status}版本!" echo "你选择回滚到${Version}版本!" #将错误的代码移动到旧的代码目录中 ssh root@${Wep_Ip} "mv -f $Code_Dir/* $Old_Code_Dir" #将回滚的代码推送到代码目录中 ssh root@${Wep_Ip} "cp -a /code/${JOB_NAME}_${Version}/* $Code_Dir" echo "代码回滚到${Version}完成!" ;; *) exit esac #免密传输给客户端(注意 :10.0.0.7是客户端的地址) [root@jenkins ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.0.0.7 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host '10.0.0.7 (10.0.0.7)' can't be established. ECDSA key fingerprint is SHA256:60WNoACIC/+M/69M2SrCLe4k5qYpKaEVqsoUmqGubnI. ECDSA key fingerprint is MD5:0a:e8:0d:c9:35:83:7e:15:17:5f:0c:b8:0e:c2:ce:f9. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@10.0.0.7's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@10.0.0.7'" and check to make sure that only the key(s) you wanted were added.
6.构建后操作
选择如图所示的GitLab build status to GitLab comit
保存即可