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

news2024/7/7 16:05:00
使用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'
            }
        }
    }
}


完成!

原文查看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/670055.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑怎样连接打印机?分享4个简单操作!

为了更方便学习,我买了一个打印机来打印需要用的资料,但是操作了半天还是没连接上,想请问一下有经验的朋友是怎么将打印机与电脑进行连接的呢? 在现代人的工作和生活中,打印机是一个重要的设备。我们可以利用打印机进行…

一文搞懂String、StringBuffer、StringBuilder三者的对比以及扩容机制

String:不可变的字符序列;底层使用char[]存储StringBuffer:可变的字符序列;线程安全的,效率低;底层使用char[]存储StringBuilder:可变的字符序列;jdk5.0新增的,线程不安全的,效率高;…

行为型设计模式09-中介者模式

🧑‍💻作者:猫十二懿 ❤️‍🔥账号:CSDN 、掘金 、个人博客 、Github 🎉公众号:猫十二懿 中介者模式 1、中介者模式介绍 中介者模式(Mediator Pattern)是一种行为设计模…

【MySQL数据库】MySQL 高级SQL 语句一

[TOC](MySQL 高级SQL 语句 一、MySQL 高级SQL 语句1.1select -显示表格中一个或数个字段的所有数据记录1.2distinct不显示重复的数据记录1.3where有条件查询1.4and、or且 或1.5in 显示已知的值的数据记录1.6between 显示两个值范围内的数据记录1.7通配符,通常通配符…

都2023年了,JavaScript ES6后的新(lao)特性,你用起来了吗?

前言 JavaScript ES6 指的是 ECMAScript 6,它是 JavaScript 语言第六版的规范。ES6 包含了很多新特性和语法糖,涵盖了从 ES6 开始至今所增加的所有特性。 因此,ES6 新特性是指从 ES6 开始新增到当前时刻所有的新特性,包括但不限…

FPGA XDMA 中断模式实现 PCIE X8 HDMI视频采集 提供工程源码和QT上位机源码

目录 1、前言2、我已有的PCIE方案3、PCIE理论4、总体设计思路和方案视频采集和缓存XDMA简介XDMA中断模式QT上位机及其源码 5、vivado工程详解6、上板调试验证7、福利:工程代码的获取 1、前言 PCIE(PCI Express)采用了目前业内流行的点对点串…

四肽-21——改善皮肤紧实感、光滑感和弹性

简介 四肽-21是一种来源于皮肤自身的四胜肽,它结构独特、能高效的促进细胞外基质合成,从而减少各种皱纹和改善皮肤衰老现象。与市场上非常受欢迎的基肽(Matrixyl)相比,四肽-21效果更为突出。 Tetrapeptide-21 is a type of tetra…

LeetCode - #85 最大矩形(Top 100)

文章目录 前言1. 描述2. 示例3. 答案题解 1题解 2 关于我们 前言 本题为 LeetCode 前 100 高频题 本题由于没有合适答案为以往遗留问题,最近有时间将以往遗留问题一一完善。 我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者&am…

解密后无法加载到指定模版,且模版名为空

问题如图: 原因:因为改变了项目的集成管理,导致变量丢失

Redis原理 - 五种数据类型的底层结构关系

原文首更地址,阅读效果更佳! Redis原理 - 五种数据类型的底层结构关系 | CoderMast编程桅杆https://www.codermast.com/database/redis/base-datatype-implement.html #字符串对象String String 是 Redis 中最常见的数据存储类型。 其基本编码方式是 …

安卓蓝牙SDP协议数据包

1. SDP概念 我们想一想,两个陌生的设备(之前未有过交互)如何去发现对方支持什么服务呢?比如Host端的Controller怎么知道远程蓝牙设备是蓝牙耳机还是HID遥控器呢?我们需要一种协议,这种协议在蓝牙设备配对成…

Git-Desktop【使用说明】

仓库操作 简单的创建仓库、删除仓库 删除点击 Remove 即可 文件操作 1、提交文件到本地仓库 2、修改文件 Git没有修改文件这一说,它只会再次提交一个新的版本到仓库中,提交修改后的文件其实是在仓库创建了一个新的文件,只不过是一个不同的…

Optano.Modeling 简单教程

前言 在工作中遇到两个需求,将两个数学公式用 .NET 的数学库找到数学公式中某个未知数的最优解,我尝试了几个数学库都没有办法完美解决我的需求,直到找到 Optano.Modeling Optano.Modeling 官网:Optano.Modeling 官网 Optano.Mo…

AI操作视频的工具最新最强集合

AI的进化日新月异,很多之前只是在想象中的操作,已经有很多可以使用AI来完成了。最新的Stable Diffusion,ControlNet,EBsynth有哪些神奇的应用,如何一键替换视频中人物和场景,如何根据文字描述即可生成梦幻视频?我们整理…

DFS/回溯/动态规划算法的融会贯通

学算法认准 labuladong 后台回复课程查看精品课 点击卡片可搜索文章👇 在线学习网站: https://labuladong.gitee.io/algo/ 经常有读者后台问我,DFS算法/回溯算法/动态规划算法之间的区别和联系是什么? 对于这个问题,我…

私有化部署的无忧·企业文档2.1.7新版本核心功能介绍

无忧企业文档是一款针对企业用户提供在线文档、协同编辑、知识管理的基础化办公工具,产品采用B/S构架。功能覆盖场景包括:在线文档的私有化部署、团队协同、知识管理、在线文档识别的扩展、文档权限化管理等等场景。本次2.1.7版本更新了以下几个核心功能…

【机器学习】十大算法之一 “线性回归”

作者主页:爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

什么是事件委托

文章目录 导文文章重点具体而言,事件委托包含两个主要角色:通过使用事件委托,可以实现以下优势: 代码示例 导文 事件委托是一种在软件开发中常用的设计模式,用于处理事件和回调函数。它允许一个对象(委托对…

数据帧转发过程中IP地址及MAC地址的变化

数据帧在交换机间转发 帧经过交换机时,其源、目标MAC是不会变的。 交换机内部的CPU会在每个端口成功连接时,通过将MAC地址和端口对应,形成一张MAC表。在今后的通讯中,发往该MAC地址的数据包将仅送往其对应的端口,而不…

odoo字段加密以及模糊显示

在信息时代,信息本身是把双刃剑,一方面它服务于我们的生产、生活、使我们受益; 一方面,信息的泄露可能对我们构成巨大的威胁。因此,客观上就需要一种有力的安全措施来保护机密数据不被窃取或篡改 。 数据加密与解密从宏观上讲是非…