Bootstrap

Jenkins-Git Parameter 插件实现指定版本的发布和回滚

在上一篇文章的基础设置上进行

1. 机器准备

开发10.0.0.204
gitlab10.0.0.201
jenkins10.0.0.200
web10.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/html

deploy(){
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 验证前端页面是否按照指定的版本显示 

;