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

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

1.安装插件 Dynamic Parameter Plug-in

2.设置 参数化构建过程



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



PHP



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



4.构建脚本



PHP



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



5.测试