基于jenkins动态化参数化构建

由于上一篇是通过触发git操作来实现自动化构建和发布,回滚和发布不太可控,可以采用动态参数获取发布分支的方式方便发布和回滚

目标

选择合适版本发布到合适的服务器环境(目前分支策略是,提测时创建发布分支release-date +%Y%m%d-%H%M%S

安装插件

Dynamic Parameter Plug-in](https://wiki.jenkins-ci.org/display/JENKINS/Dynamic+Parameter+Plug-in)

设置 参数化构建过程

1

使用groovy脚本动态获取发布分支

1
2
def ver_keys = [ 'bash', '-c', 'cd /gitrepos/project1; git pull>/dev/null; git branch -a|grep remotes|grep release|cut -d "/" -f3|sort -r |head -10 ' ]
ver_keys.execute().text.tokenize('\n')

其他方式参考:http://birdinroom.blog.51cto.com/7740375/1404930

构建脚本


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
echo $release_version
echo $deploy_server
case $deploy_server in
test)
echo "This server is $deploy_server -----test enviroment"
cd /gitrepos/project1/
git checkout $release_version
git pull origin $release_version
rsync -avH --delete --progress --exclude=robots.txt --exclude=.gitignore --exclude=.git --exclude=.DS_Store --exclude="*.tar" /gitrepos/project1/ /gitrepos/project1/
;;
prod)
echo "This server is $deploy_server ------production enviroment"
cd /gitrepos/project1/
git checkout $release_version
git pull origin $release_version
rsync -avH --delete --progress --exclude=robots.txt --exclude=.gitignore --exclude=.git --exclude=.DS_Store --exclude="*.tar" '-e ssh -p 22000' /gitrepos/project1/ www@node1.simlinux.com:/gitrepos/project1/
;;
*)
exit
;;
esac

测试

坚持原创分享,您的支持将鼓励我继续创作