Jenkins配置项目提交推送到不同分支时构建不同项目

  |     |  

1. 创建Jenkins项目

如果你是基于Maven依赖构建,可创建一个maven项目,如果不是,可创建一个自由风格项目。

2. 配置Jenkins项目

这里我对触发构建新插件简单介绍下:
如果我需要分别为git上的分支(假设为develop和master)进行构建,那么我需要分别为两个分支两个项目XX-develop和XX-master,并且以第一种方式我还需在webhook上建立两个推送,这样每次我push,才会对这两个项目触发构建,但是,问题来了,假如我push到develop,但是我的master对应的jenkins项目也跟着进行了一个不必要的构建,这样明显存在着问题,所以我google了新的解决方案,就是采用Generic Webhook Trigger Plugin进行正则的匹配构建。
插件对应配置如下:
image
Generic Webhook Trigger主要有: Post content parameters、 Header parameters、Request parameters和Optional filter这几个组成。
其中,Post content parameters是对POST请求数据的处理,其他 Header parameters、Request parameters类似,在众多变量中,我们可以筛选到一个具有标识分支的变量,ref。
当我们push到develop时,WebHook推送的信息中,ref为refs/heads/develop,而push到master是ref则为refs/heads/master,所以使用Generic Webhook Trigger Plugin则可以通过正则对推送内容中的ref进行匹配构建,如上图所示。
WEB HOOK推送的请求头示例:
image

3. 设置Web Hook

gitea的Web hook在仓库设置中,创建一个Gogs的WebHOOK,因为jenkins还未支持Gitea的WebHook。
image
接着填写推送地址,因为我用的触发构建操作的插件是Generic Webhook Trigger,它的推送地址格式是
http://[host]/generic-webhook-trigger/invoke?token=abc123
此处的Token比较重要,用来区分项目,可为不同项目建立一个唯一的Token,通常token设置如下图所示:
image
如果你还嫌不够安全,可以在为触发构建添加一个Secret,对应的jenkins设置处如下图:
image

4. 测试push触发自动构建

image
点击测试推送,即可发送一条测试推送,如果配置没问题,jenkins会接受到该推送并用正则过滤找到特定项目,触发一系列操作。

注意事项:

gradle项目接入jenkins,因为develop分支对应的项目版本要为latest,这个镜像构建出来的才为latest,所以需要为build.gradle添加version设置,如:

1
2
3
4
5
if (project.hasProperty('projVersion')) {
project.version = project.projVersion
} else {
project.version = '10.0.0'
}

构建时便可以动态改变版本了。

1
gradle -PprojVersion=latest build

需要导入本地jar时,有两种方法:

  1. 传统方法,直接拉到jenkins所在服务器,进行手动导包。
  2. 创建Jenkins项目,进行自动构建并执行导入仓库命令。
文章目录
  1. 1. 1. 创建Jenkins项目
  2. 2. 2. 配置Jenkins项目
  3. 3. 3. 设置Web Hook
  4. 4. 4. 测试push触发自动构建
    1. 4.1. 注意事项:
作者共写了53.1k个字 本站总访问量  |   您是访问本站的第个小伙伴