写点什么

Jenkins 配置仅合并代码后触发流水线

作者:这我可不懂
  • 2023-06-21
    福建
  • 本文字数:1125 字

    阅读完需:约 4 分钟

Jenkins配置仅合并代码后触发流水线

使用 GitLab+Jenkins 集成, 使用 Jenkins 的 Generic WebHook 插件;此插件可以作为各个工具间集成使用的通用方式,但是遇到些场景需要写些代码。关于 “合并代码后触发 Pipeline”的配置方式, 其实思路简单,实现和让我描述起来还是有点复杂的,今天来做一下,分享给需要的伙伴。


一、Jenkins 作业设置


开启 webhook trigger;



开启调试信息(为了便于拿到 Gitlab POST 数据)



为触发器配置一个全局且唯一的 Token(一般使用作业名字)



生成该作业的触发 URL


http://192.168.1.200:8080/generic-webhook-trigger/invoke?token=devops-merge-trigger


二、GitLab 项目设置


创建一个项目



配置 Merge request 事件的 webhook。


三、分析数据


创建 Merge request,观察数据。



合并后 GitLab 的 webhook 触发了, 我们需要对比开启请求和合并请求的数据。找不同,找特点。


# approved 状态

$.event_type = merge_request

$.object_attributes.state = opened

$.object_attributes.action = approved


# merge 状态

$.event_type = merge_request

$.object_attributes.state = merged

$.object_attributes.action = merge



#拿到 source 和 target 分支

$.object_attributes.source_branch

$.object_attributes.target_branch

四、开始集成


此部分都是在 jenkins 上面配置的

配置 Generic Webhook 的过滤没用的请求,实现精准触发;

currentBuild.description = "Trigger: ${source_branch}  > ${target_branch} \n${event_type}  \n ${state}  \n ${action}"
pipeline { agent any

triggers { GenericTrigger(causeString:'Generic Cause', genericVariables: [[defaultValue:'', key:'event_type', regexpFilter:'', value:'$.event_type'], [defaultValue:'NULL', key:'state', regexpFilter:'', value:'$.object_attributes.state'], [defaultValue:'NULL', key:'action', regexpFilter:'', value:'$.object_attributes.action'], [defaultValue:'NULL', key:'source_branch', regexpFilter:'', value:'$.object_attributes.source_branch'], [defaultValue:'NULL', key:'target_branch', regexpFilter:'', value:'$.object_attributes.target_branch']], printContributedVariables:true, printPostContent:true, regexpFilterExpression:'^merge_request\\smerged\\smerge$', regexpFilterText:'$event_type $state $action', token:'devops-merge-trigger', tokenCredentialId:'')}


stages { stage('Hello') { steps { echo 'Hello World' } }}}
复制代码

完成!


此文出处:文章

发布于: 刚刚阅读数: 4
用户头像

低代码技术追随者,为全民开发而努力 2023-02-15 加入

大家好,我是老王,专注于分享低代码图文知识,感兴趣的伙伴就请关注我吧!

评论

发布
暂无评论
Jenkins配置仅合并代码后触发流水线_jenkins_这我可不懂_InfoQ写作社区