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

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

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

5c6745919075dfe9a56bbeb17b46d3e6.jpg


Jenkins 作业设置



开启webhook trigger;

ca711a9489da2c4d5181624a18a05da2.png


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

5e1737c25d75b928b7dba13c130df327.png

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

ca84a382c5659603ea90d9c1dea350a4.png


生成该作业的触发URL

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


GitLab项目设置



创建一个项目

6bae4059b4c8eb005304e29cca2e39de.png


配置Merge request事件的webhook。

afaced2d508dbad25673e2038a9c900b.png


分析数据



创建Merge request,观察数据。

26453688487ff7dac3da63c58738d604.png


合并后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'
            }
        }
    }
}


完成!

b0655fa486908f295854ccff7388f5ac.png


原文查看

相关文章
|
1月前
|
移动开发 jenkins 持续交付
jenkins配置git
通过上述步骤,您可以在 Jenkins 中成功配置 Git,从而实现自动拉取代码并进行构建和部署。这些配置不仅提高了开发效率,还保证了代码的连续集成和交付。确保每一步配置正确,以避免在实际使用中遇到问题。
55 1
|
2月前
|
安全 jenkins 持续交付
如何在 Jenkins 中配置邮件通知?
如何在 Jenkins 中配置邮件通知?
134 11
|
3月前
|
Java jenkins 持续交付
Centos7下docker的jenkins下载并配置jdk与maven
通过上述步骤,您将成功在CentOS 7上的Docker容器中部署了Jenkins,并配置好了JDK与Maven,为持续集成和自动化构建打下了坚实基础。
156 1
|
5月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
109 1
|
4月前
|
jenkins 持续交付 网络安全
利用 Jenkins 实现持续集成与持续部署-代码拉取终端的配置
安装Git、配置用户信息、生成SSH密钥以及在Gitee上创建项目仓库等。
97 0
|
2月前
|
jenkins Devops Java
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第27天】在快速发展的软件开发领域,DevOps实践日益重要。Jenkins作为一款流行的开源自动化服务器,在持续集成(CI)和持续部署(CD)中扮演关键角色。本文通过案例分析,探讨Jenkins在Java项目中的应用,展示其自动化构建、测试和部署的能力,提高开发效率和软件质量。
80 2
|
5月前
|
jenkins 持续交付 开发者
自动化部署:使用Jenkins和Docker实现持续集成与交付
【8月更文挑战第31天】本文旨在为读者揭示如何通过Jenkins和Docker实现自动化部署,从而加速软件开发流程。我们将从基础概念讲起,逐步深入到实际操作,确保即使是初学者也能跟上步伐。文章将提供详细的步骤说明和代码示例,帮助读者理解并应用这些工具来优化他们的工作流程。
|
1月前
|
监控 jenkins Linux
从 Jenkins 持续集成出发:探究如何监控员工电脑屏幕
Jenkins 在企业信息化管理中用于自动化构建、测试和部署,提高开发效率。本文讨论了其重要性,并从技术角度探讨了屏幕监控的可能性,但明确反对非法监控,强调应合法合规地管理企业和尊重员工隐私。
75 12
|
2月前
|
运维 jenkins Java
Jenkins在持续集成与持续部署中的价值
Jenkins在持续集成与持续部署中的价值
|
2月前
|
jenkins Devops 测试技术
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第26天】随着DevOps理念的普及,Jenkins作为一款开源自动化服务器,在持续集成(CI)与持续部署(CD)中发挥重要作用。本文通过某中型互联网企业的实际案例,展示了Jenkins如何通过自动化构建、持续集成和持续部署,显著提升开发效率、代码质量和软件交付速度,帮助企业解决传统手工操作带来的低效和错误问题。
107 4