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

时间:2022-01-04 21:42:04

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

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

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

找到”构建“, 点击“增加构建步骤", 选择“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中触发

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

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