前面在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. 《Linux就该这么学》第三天课程

    秦时明月经典语录: 王道: 千里挥戈,万众俯首.四海江湖,百世王道.——项羽 今天主要介绍了常用系统工作的命令 如需进一步了解,请前往https://www.linuxcool.com(附带配音) r ...

  2. 2019.02.11 bzoj4818: [Sdoi2017]序列计数(矩阵快速幂优化dp)

    传送门 题意简述:问有多少长度为n的序列,序列中的数都是不超过m的正整数,而且这n个数的和是p的倍数,且其中至少有一个数是质数,答案对201704082017040820170408取模(n≤1e9, ...

  3. c++WIN32获取syslistview行数

    #include "stdafx.h" #include <windows.h> #include <commctrl.h> #include <io ...

  4. w3wp.exe(IIS ) CPU 占用 100% 的常见原因

    引起 w3wp.exe(IIS ) Cpu 占用 100% 的常见原因如下: 1. Web 访问量大,从而服务器压力大而引起的 2. 动态页面(.aspx)的程序逻辑复杂程度 3. 页面程序中有死循环 ...

  5. elasticsearch之hello(spring data整合)

    1.书写pom.xml文件 <dependencies> <dependency> <groupId>org.springframework.data</gr ...

  6. 背水一战 Windows 10 (84) - 用户和账号: 微软账号的登录和注销

    [源码下载] 背水一战 Windows 10 (84) - 用户和账号: 微软账号的登录和注销 作者:webabcd 介绍背水一战 Windows 10 之 用户和账号 微软账号的登录和注销 示例演示 ...

  7. 背水一战 Windows 10 (77) - 控件(控件基类): ContentControl, UserControl, Page

    [源码下载] 背水一战 Windows 10 (77) - 控件(控件基类): ContentControl, UserControl, Page 作者:webabcd 介绍背水一战 Windows ...

  8. Win32 CMD批处理命令

    1. win32批处理下,另开一个console执行进程X 使用start [/K|/C],示例: //------------------------------------------------ ...

  9. 宽字符————_T、_TEXT、L、TEXT之间的区别

    _T._TEXT.L.TEXT之间的区别 在分析前先对三者做一个简单的分类 _T._TEXT.TEXT三者都是根据编译器的环境进行ANSI/UNICODE变换的,_T和_TEXT是根据_UNICODE ...

  10. 首页背景图片在PC端有显示,在手机端不显示的解决方法

    今天看博客的资源大小,发现背景图片有44k大的吓人,准备压缩一下. 压缩之后才发现,我的背景图片在手机端是没有显示的.原因是背景图片不支持缩放. 上网查了下,发现加入如下代码之后就支持缩放了: bac ...