Jenkins-Git Parameter 插件实现指定版本的发布和回滚
在上一篇文章的基础设置上进行
1. 机器准备
开发 | 10.0.0.204 |
gitlab | 10.0.0.201 |
jenkins | 10.0.0.200 |
web | 10.0.0.202 |
2. 开发主机
在开发机器上修改不同版本的前端页面,并打上标签
第一次修改
[root@dev wheel]#vim index.html
[root@dev wheel]#git commit -am "1.0"
[master 6914b4e] 1.0
1 file changed, 1 insertion(+), 1 deletion(-)
[root@dev wheel]#git tag v1.0
[root@dev wheel]#git push --all
第二次修改
[root@dev wheel]#vim index.html
[root@dev wheel]#git commit -am "2.0"
[master 6914b4e] 2.0
1 file changed, 1 insertion(+), 1 deletion(-)
[root@dev wheel]#git tag v2.0
[root@dev wheel]#git push --all
第三次修改
[root@dev wheel]#vim index.html
[root@dev wheel]#git commit -am "3.0"
[master 6914b4e] 3.0
1 file changed, 1 insertion(+), 1 deletion(-)
[root@dev wheel]#git tag v3.0
[root@dev wheel]#git push --all
上传所有标签
[root@dev wheel]#git push --tags
总共 0(差异 0),复用 0(差异 0),包复用 0
To gitlab.lly.org:devops/wheel.git
* [new tag] v1.0 -> v1.0
* [new tag] v2.0 -> v2.0
* [new tag] v3.0 -> v3.0
3. jenkins 机器
项目发布和回滚一体的脚本
[root@jenkins scripts]#vim wheel-gitlab-deploy-rollback.sh
HOST_LIST="
10.0.0.202"APP=wheel
VERSION=`date +%F_%s`
DATA_PATH=/srv
#DATA_PATH=/srv/${APP}-${VERSION}
APP_PATH=/var/www/htmldeploy(){
for host in $HOST_LIST;do
ssh root@$host "mkdir -p $DATA_PATH/${APP}-${VERSION} && rm -rf ${APP_PATH}"
scp -r * root@$host:$DATA_PATH/${APP}-${VERSION}
ssh root@$host ln -s $DATA_PATH/${APP}-${VERSION} ${APP_PATH}
done
}rollback() {
for i in ${HOST_LIST};do
CURRENT_VERISION=$(ssh root@$i "readlink $APP_PATH")
CURRENT_VERISION=$(basename ${CURRENT_VERISION})
echo ${CURRENT_VERISION}
PRE_VERSION=$(ssh root@$i "ls -1 ${DATA_PATH} | grep -B1 ${CURRENT_VERISION}|head -n1 ")
echo $PRE_VERSION
ssh root@$i "rm -f ${APP_PATH}&& ln -sv ${DATA_PATH}/${PRE_VERSION} ${APP_PATH}"
done
}
case $1 in
deploy)
deploy
;;
rollback)
rollback
;;
*)
echo "Usage: $0 deploy|rollback"
;;
esac
4. jenkins 工具
jenkins 工具上添加任务(提前下载 git parameter 插件)
根据脚本中的两个函数填写选项参数,并设为变量
选择 git 参数,自动生成标签
源码管理中,URL 和凭证对应选择(若是 http,则使用用户名密码认证凭证,若是 git,则使用key认证凭证)
构建步骤选择 excute shell ,填写脚本绝对路径,后面跟上参数变量,运行时可指定函数
执行任务时,则可选择指定发布或是回滚,以及可指定版本
5. web 端验证
使用web 主机 ip 验证前端页面是否按照指定的版本显示