欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-23 13:28:40
...

1. 创建Jenkins项目

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

2. 配置Jenkins项目

这里我对触发构建新插件简单介绍下:
如果我需要分别为git上的分支(假设为develop和master)进行构建,那么我需要分别为两个分支两个项目XX-develop和XX-master,并且以第一种方式我还需在webhook上建立两个推送,这样每次我push,才会对这两个项目触发构建,但是,问题来了,假如我push到develop,但是我的master对应的jenkins项目也跟着进行了一个不必要的构建,这样明显存在着问题,所以我google了新的解决方案,就是采用Generic Webhook Trigger Plugin进行正则的匹配构建。
插件对应配置如下:
Jenkins配置项目提交推送到不同分支时构建不同项目
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推送的请求头示例:
Jenkins配置项目提交推送到不同分支时构建不同项目

3. 设置Web Hook

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

4. 测试push触发自动构建

Jenkins配置项目提交推送到不同分支时构建不同项目
点击测试推送,即可发送一条测试推送,如果配置没问题,jenkins会接受到该推送并用正则过滤找到特定项目,触发一系列操作。

注意事项:

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

if (project.hasProperty('projVersion')) {
  project.version = project.projVersion
} else {
  project.version = '10.0.0'
}

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

gradle -PprojVersion=latest build   

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

  1. 传统方法,直接拉到jenkins所在服务器,进行手动导包。
  2. 创建Jenkins项目,进行自动构建并执行导入仓库命令。