使用gitlab, jenkins搭建CI(持续集成)系统(3) -- 根据不一样触发条件执行不一样的构建任务

前面在jenkins中安装的gitlab hook支持不一样的参数,具体能够参考gitlab hook文档https://github.com/jenkinsci/gitlab-hook-plugin#parameterized-projects。其中BRANCH表示触发构建的分支名,咱们能够在构建脚本中使用这个参数,进行不一样的构建。要使用这个参数,须要在jenkins中进行配置git

 

接下来就是要编写配置脚本了github

找到”构建“, 点击“增长构建步骤", 选择“Execute shell", 而后在里面写构建脚本spring

 

#应用名称shell

export appname="example-springbootmvc"springboot

 

#master - dev环境构建配置,服务器

#登陆到服务器时使用的用户名mvc

export master_user="root"app

#应用部署的目录  构建完成后会/apps下(须要预先建立好这个目录)会有example-springbootmvc目录,这个就是你的应用部署的位置。
export master_appsdir="/apps"gitlab

#服务器去的IP地址列表 格式 ip1,ip2,ip3 ip地址直接用","分割gradle

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"}}