前面在jenkins中安装的gitlab hook支持不同的参数,具体可以参考gitlab hook文档https://github.com/jenkinsci/gitlab-hook-plugin#parameterized-projects。其中BRANCH表示触发构建的分支名,我们可以在构建脚本中使用这个参数,进行不同的构建。要使用这个参数,需要在jenkins中进行配置
接下来就是要编写配置脚本了
找到”构建“, 点击“增加构建步骤", 选择“Execute shell", 然后在里面写构建脚本
#应用名称
export appname="example-springbootmvc"
#master - dev环境构建配置,
#登录到服务器时使用的用户名
export master_user="root"
#应用部署的目录 构建完成后会/apps下(需要预先创建好这个目录)会有example-springbootmvc目录,这个就是你的应用部署的位置。
export master_appsdir="/apps"
#服务器去的IP地址列表 格式 ip1,ip2,ip3 ip地址直接用","分割
export master_iplist="192.168.1.41"
#一下分别是 test-test环境构建, release-prepublish环境和publish-realpublish环境环境的构建,每一项参数的的含义和master一样。
export appname="example-springbootmvc"
export master_user="root"
export master_appsdir="/apps"
export master_iplist="192.168.1.41"
export test_user="root"
export test_appsdir="/apps"
export test_iplist="192.168.1.42"
export release_user="root"
export release_appsdir="/apps"
export release_iplist="192.168.1.43,192.168.1.44"
/root/jenkins/scripts/distanddeploy.sh
#执行构建和部署脚本,这个脚本将使用以上配置的环境变量,
#distanddeploy.sh和它调用的一系列脚本代码可以在这里下载https://github.com/brandonlyg/ci-scripts,
#把这些脚本方192.168.1.36的/root/jenkins/scripts中。
/root/jenkins/scripts/distanddeploy.sh
下面以master-dev配置为例解释一下,配置导致脚本的行为
当把修改master分支代码,push到gitlab上之后,将会触发master构建。脚本将会执行一下步骤的动作:
1. 将master分支pull到本地。
2. 使用gradle build命令构建应用
3. example-springbootmvc下创建dist目录,在这个目录下创建分发包。
4. 将用multiconfig/master中的配置文件覆盖分发包中config目录下的配置文件
5. 将分发包打包成zip
6. 将zip包传到192.168.1.41, 并部署在/apps下
7. 调用example-springbootmvc/bin/start.sh 启动服务。
test和master分支的构建部署过程是一样的。
和master,test相比,release构建部署过程有两点不同:
1. 触发方式不同,需要在Build with Parameters中触发
2. 代码处理方式不同,脚本会自动将test分支的代码合并到release上再构建release分支
验证方法:
dev环境
http://192.168.1.41:9300/rest/get
test环境
http://192.168.1.42:9301/rest/get
prepublish环境
http://192.168.1.43:9302/rest/get
返回类似于
{"retCode":0,"errMsg":null,"data":{"userId":"11111","timeStamp":1521293702385,"info":"this is 9 env:prepublish"}}