目标 : 实现Jenkins 根据git分支名打包,部署指定应用
本人项目:一个项目包含四个子应用 ops 包含:admin,app,service
添加四个构建参数
1.分支号
2.是否执行自动部署
3.要部署的服务器环境
4.该项目的子应用
1.需要Jenkins安装Post build task插件
2.在构建后操作中增加Post build task
Script:
#!/usr/bin/env bash _project=ops #指定项目 #后面四个参数为构建中的四个参数 _is_deployer=${deployer} _build_number=${BUILD_NUMBER} _application=${application} _environment=${environment} if [ "$_is_deployer" == "true" ];then cd /home/test ./run.sh ${_project} ${_build_number} ${_environment} ${_application} fi
通过Jenkins插件中script调用后续部署脚本run.sh
run.sh
#!/usr/bin/env expect set _project [lindex $argv 0] set _build_number [lindex $argv 1] set _environment [lindex $argv 2] set _application [lindex $argv 3] set timeout 90 spawn su test sleep 3 send "password" sleep 3 send "cd /home/test\r" sleep 3 send "./deployer.sh $_project $_build_number $_environment $_application \r" expect "success" Interact脚本解释:
1.使用expect命令 安装方法 yum install expect
2.前四个set用于接收参数 set timeout用于指定执行脚本的超时时间
3.通过su 自动设置密码 从Jenkins用户切换到test用户
4.每条指令间隔我这里前面设置等待3秒保证脚本执行完成
5.最后一个调用deployer.sh是指最终的部署,通过参数指定环境,应用,构建包号
6.deployer.sh执行成功后返回success,expect判断接收到success完成脚本执行,等待返回值的最大时间是
上面设置set timeout
此次教程中,Jenkins插件属于简单操作,后面的部署命令调用是重点.
每个公司都有自己的部署方式,但是Jenkins打包服务器与应用服务器基本都是分开的.
所以会涉及到通过脚本切换服务器角色执行命令,所以这里就用到了except实现.