前面在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"}}

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

  1. Jenkins的CI持续集成

    Jenkins的CI持续集成 全局配置 系统管理->全局工具配置,配置Git,JDK和Maven 1)解压maven到当前目录 tar zxf apache-maven-3.5.4-bin.ta ...

  2. 基于jenkins搭建一个持续集成服务器

    1 引言 1.1 编写目的 指导质量管理部,业务测试组同事进行Jenkins环境部署,通过Jenkins解决测试环境不可控,开发测试环境不一致等问题. 1.2 使用对象 质量管理部.基础研发部,集成部 ...

  3. docker + gitlab + jenkins 搭建 CI/CD 系统

    gitlab+jenkins+docker 计算机网络大全

  4. 使用gitlab, jenkins搭建CI(持续集成)系统(1) -- 准备环境

    1. 环境设计 搭建一个从开发到测试知道发布上线可以自动换完成的CI系统.这个系统中包含4个环境. 开发(dev)环境: 码农使用. 测试(test)环境: 测试人员使用. 预发布(prepublis ...

  5. 使用gitlab, jenkins搭建CI(持续集成)系统(2) -- 配置webhook触发构建

    1. 在gitlab上配置192.168.1.30的ssh秘钥,使jenkins可以操作gitlab上的project 进入gitlab,点击右上角 点击 Settings -> SSH key ...

  6. 使用gitlab, jenkins搭建CI(持续集成)系统(4) 灰度发布publish

    publish环境是正式环境,和dev, test, prepublish环境不同的是,正式环境一般要更加谨慎一些,发布的时候需要有一个灰度过程,即:分多次部署,每次部署几个服务器节点,验证没有问题以 ...

  7. Jenkins Android APP 持续集成体系建设二—自动部署、执行测试任务,关联打包任务

    经过上一遍博客我们知道了怎么使用Jenkins自动打包,但打完包之后,我们还需要对新包进行回归测试,确定新包有没有问题,然后才能发布包,那么,话不多说,我们先来新建个自动化回归测试任务 新包自动化回归 ...

  8. [原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

    近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发.敏捷开发.迭代开发.持续集成和单元测试这些拉风的术语.然而,大都是仅仅听到在说而已,国内 ...

  9. CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

    原文地址https://www.cnblogs.com/kevingrace/p/5651447.html 近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更 ...

随机推荐

  1. Python:每日一题003

    题目: 一个整数,它加上100和加上268后都是一个完全平方数,请问该数是多少? 程序分析: 在10000以内判断,将该数加上100后再开方,加上268后再开方,如果开方后的结果满足如下条件,即是结果 ...

  2. Note | LaTeX

    目录 一.TeX家族 1. TeX - LaTeX 2. pdfTeX - pdfLaTeX 3. XeTeX - XeLaTeX 4. CTeX - MiKTeX - TeX Live 二.入门 1 ...

  3. C++基础笔记(int转string)

    int a = 23; stringstream ss; ss << a; string s1 = ss.str(); 头文件需添加#include "sstream"

  4. 【git 报错】Could not read from remote repository.Please make sure you have the correct access rights.

    我们在使用git clone 或其他命令的时候,有时候会遇到这类问题,如图: and the repository exists. fatal: Could not read from remote ...

  5. 第三周Access的总结

    一.问;这节课你学到了什么知识? 答:这周我学得比较少,主要是学Access的数据库进行基本的维护. 2.3数据库的基本维护 对Access定期检查,修复是整个数据库重要部分: 1.Access可修复 ...

  6. PHP 文件处理----fopen(),fclose(),feof(),fgets(),fgetc()

    fopen() 函数用于在 PHP 中打开文件. 打开文件 fopen() 函数用于在 PHP 中打开文件. 此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来打开文件: < ...

  7. <Listener>HttpSessionListener和HttpSessionAttributeListener区别

    一.HttpSessionListener HttpSessionListener是对Session的一个监听,主要监听关于Session的两个事件,即初始化和销毁.HttpSessionListen ...

  8. 请找出至少一个由递推关系 a(i) = a(i – 1) + a(i – 2) 生成的数列,使得当 n 趋于 (√5+1)/2的数列

    寻找前后两项比值趋于 (√5+1)/2的广义Fibonacci数列 找到了一个帖子:这个帖子 //待补充

  9. Python大法之告别脚本小子系列—信息资产收集类脚本编写(下)

    作者:阿甫哥哥 原文来自:https://bbs.ichunqiu.com/article-1618-1.html 系列文章专辑:Python大法之告别脚本小子系列目录: 0×05 高精度字典生成脚本 ...

  10. HTTP 协议基础概念和报文结构

    基础概念 1.WWW(World Wide Web,万维网)构建技术有3项: (1)把SGML(Standard Generalized Markup Language,标准通用标记语言)作为页面的文 ...