脚本宝典收集整理的这篇文章主要介绍了Jenkins教程(七)实现 GitLab 提交/合并代码触发构建,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
最近公司推行统一构建平台(基于 Jenkins + Kubernetes 插件创建 slave),原来部门自建的 Jenkins 不让用了。
迁移上统一构建平台的最大阻力是前端模块发布的问题:
基于这个问题,研究了一下午 GitLab Plugin 官方文档和仓库,实现了 Jenkins 声明式流水线 GitLab 提交/合并代码触发构建,记录下来。
如图,GitLab 在开发者推送或合并代码时触发 webhook,向 webhook URL 发送一个 HTTP 请求(即 Jenkins 流水线配置触发器的地址),Jenkins 流水线触发器启动构建与发布流程。
所以,实现需求只做以下两件事:
本着快速解决问题,再夹带扩展知识的原则,接下来我们先讲如何配置,更多参数将放到最后。
piPEline{
//省略无关配置
triggers {
gitlab(
triggerOnPush: true,
triggerOnMergeRequest: false,
triggerOpenMergeRequestOnPush: "never",
acceptMergeRequestOnSuccess: false,
triggerOnApPRovedMergeRequest: true,
branchFilterType: "NameBaseDFilter",
includeBranchesSpec: "develop",
secretToken: "thisisfrontendpublish"
)
}
//省略无关配置
}
以上配置参数说明:
参数名 | 参数说明 | 默认值 |
---|---|---|
triggerOnPush | 是否 Push 事件时触发 | true |
triggerOnMergeRequest | 是否 Merge Request 事件时触发,MR 包含创建、变更、接受等很多情况 | true |
triggerOpenMergeRequestOnPush | Merge Request 中源分支或目的分支被Push时触发 | false |
acceptMergeRequestOnSuccess | 构建成功时向GitLab发起接收 Merge Request 事件 | false |
triggerOnApprovedMergeRequest | MR 被批准时触发 | true |
branchFilterType | 分支匹配类型:基于名称 NameBasedFilter ,基于正则表达式 RegexBasedFilter ,两者混用 ALL |
ALL |
includeBranchesSpec | branchFilterType 为 NameBasedFilter 生效,监听哪些分支的事件,多分支使用英文逗号分开 |
"" |
secretToken | 类似一个密码,用于外部调用此工程时校验 | "" |
更多参数说明:
参数名 | 参数说明 | 默认值 |
---|---|---|
triggerToBranchDeleteRequest | 删除分支时触发 | false |
triggerOnlyIfNewCommitsPushed | 仅当新提交推送时 | false |
triggerOnAcceptedMergeRequest | 与 acceptMergeRequestOnSuccess 类似 |
false |
triggerOnClosedMergeRequest | 关闭 Merge Request 时触发 | false |
triggerOnNoteRequest | 注释触发,根据提交时写的注释触发 | true |
noteRegex | 注释触发正则表达式 | Jenkins please retry a build |
ciSkip | 允许 CI 跳过 | true |
skipWorkInProgressMergeRequest | 跳过正在合并过程中的 Merge Request | true |
setBuildDescription | 是否添加构建触发原因描述 | true |
triggerOnPipelineEvent | GitLab Pipeline 事件触发 | false |
cancelPendingBuildsOnUpdate | 当源码更新时取消正在 Pending 状态的构建,适当开启有助于减少构建次数,毕竟大家只关心最新的构建结果 | false |
excludeBranchesSpec | branchFilterType 为 NameBasedFilter 生效,指定排除哪些分支的事件 |
"" |
sourceBranchregex | 分支匹配类型为 RegexBasedFilter 时源分支正则 |
"" |
targetBranchRegex | 分支匹配类型为 RegexBasedFilter 时目标分支正则 |
"" |
mergeRequestLabelFilterconfig | 根据标签过滤 Merge Request 配置 | 非 null |
includeMergeRequestLabels | mergeRequestLabelFilterConfig 块中设置包含的 Merge Request 的标签,多个标签以英文逗号分隔 |
"" |
excludeMergeRequestLabels | mergeRequestLabelFilterConfig 块中设置排除的 Merge Request 的标签,多个标签以英文逗号分隔 |
"" |
源码及配置参考:
查看 Jenkins 流水线触发器
修改完成流水线,如果是版本控制的脚本需提交再执行一下构建以更新触发器配置。
@H_512_315@
在需要添加提交/合并请求的仓库上操作。
到这步配置完成就可以提交/合并请求测试构建是否被触发了。
文章看起来内容虽然不多,但官方给了几个例子例子有点坑人,没看到哪里列出来各参数的作用,最坑的是 includeBranchesSpec
这个参数官方示例是 release/qat
,导致误认为多分支需要用 /
分开。。。
写完这篇文章还是有收获的——清楚了很多参数的作用,如果后续用到不会太抓瞎。
本文同步发布于博客园(东北小狐狸 https://www.cnblogs.com/hellxz/)与CSDN(东北小狐狸-Hellxz https://bLOG.csdn.net/u012586326)禁止转载。
以上是脚本宝典为你收集整理的Jenkins教程(七)实现 GitLab 提交/合并代码触发构建全部内容,希望文章能够帮你解决Jenkins教程(七)实现 GitLab 提交/合并代码触发构建所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。