代码发布和回滚#
代码发布前,先将之前测试流程的触发器关闭

1.将稳定版本的main打标签 tag#
1
2
3
4
|
[root@gitlab game]#vim index.html 修改为v1.0.1
[root@gitlab game]#git commit -am "v1.0.1"
#为当前的仓库的代码打tag
[root@gitlab game]#git tag -a v1.0.1 -m "v1.0.1"
|
2.将tag提交到gitlab的game项目中#
1
2
|
推送tag到远程仓库
[root@gitlab game]#git push -u origin v1.0.1
|
3.jenkins获取gitlab中的tag#
1
2
3
|
jenkins需要通过使用 git parameter插件获取项目中tag版本号信息
注: 接下来安装插件、在可选插件中搜索Git Parameter 直接安装即可,已安装则忽略次步骤
进入到项目把前面的参数化去掉重新选择使用git parameter
|

4.新建一个任务,只用于代码发布和回滚#




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
[root@jenkins scripts]#vim deploy.sh
#!/bin/sh
CODE_DIR=`pwd`
WEB_DIR="/code/"
get_code_tar(){
cd $CODE_DIR && tar zcf /opt/web-$git_version.tar.gz ./*
}
scp_code_web(){
scp /opt/web-$git_version.tar.gz 11.0.1.7:$WEB_DIR
}
code_tarxf(){
ssh 11.0.1.7 "cd $WEB_DIR &&mkdir web-$git_version && tar xf web-$git_version.tar.gz -C web-$git_version"
}
ln_html(){
ssh 11.0.1.7 "cd $WEB_DIR && rm -rf html && ln -s web-$git_version html"
}
main(){
get_code_tar;
scp_code_web;
code_tarxf;
ln_html;
}
main
|
测试构建,为了演示效果,先删除web服务器/code/目录内容
1
|
[root@web01 code]#rm -fr *
|




1
2
3
4
5
|
[root@web01 code]#ll
total 7740
lrwxrwxrwx 1 root root 10 Oct 10 15:56 html -> web-v1.0.1
drwxr-xr-x 6 root root 126 Oct 10 15:56 web-v1.0.1
-rw-r--r-- 1 root root 7922995 Oct 10 15:56 web-v1.0.1.tar.gz
|
更新版本(多推送几个版本进行测试)



使用参数化构建中的选项参数



优化发布和回滚操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#!/bin/sh
CODE_DIR=`pwd`
WEB_DIR="/code/"
get_code_tar(){
cd $CODE_DIR && tar zcf /opt/web-$git_version.tar.gz ./*
}
scp_code_web(){
scp /opt/web-$git_version.tar.gz 11.0.1.7:$WEB_DIR
}
code_tarxf(){
ssh 11.0.1.7 "cd $WEB_DIR &&mkdir web-$git_version && tar xf web-$git_version.tar.gz -C web-$git_version"
}
ln_html(){
ssh 11.0.1.7 "cd $WEB_DIR && rm -rf html && ln -s web-$git_version html"
}
main(){
get_code_tar;
scp_code_web;
code_tarxf;
ln_html;
}
if [ $game = "deploy" ];then
main
elif [ $game = "rollback" ];then
ln_html
fi
|
这样发布过的版本就可以直接rollback,不用deploy,可以减少重复构建,不用重新执行整个main函数,只需要执行ln_html就可以了
5.拉取对应的版本#
