jenkins实现master变化时,才触发构建(过滤分支)
现状:现在是这样的,每个开发push时,都触发jenkins进行构建
期望:只有当代码被push到master时才进行构建
(根据使用的git平台)做这些配置需要先了解一些概念:
(github) pull request
(gitlab) merge request
理解 GitHub 的 Pull Request 和 GitLab 的 Merge Request 有区别吗?看这篇
https://cloud.tencent.com/developer/article/1341633
个人理解,其实pull request 和 merge request表达的意思都是一样的,只是在不同的平台,起了不同的名字
- GitHub、Bitbucket 和码云(Gitee.com)选择 Pull Request 作为这项功能的名称
- GitLab 和 Gitorious 选择 Merge Request 作为这项功能的名称
然后还要理解gitlab的工作流:

步入正题:
2种方式可以实现 只有master代码变化时才触发自动化测试
- 利用merge request: 当开发发送merger request给项目leader时(要求合代码),就进行构建
- 利用jenkins进行配置,只有当master代码产生push时,才进行构建
方式1:利用merge request方式:
step1:
打开gitlab仓库配置的webhook,勾选Merge request events的选项
我这边是已经配置过webhook了,如果还没有配置过,请参考这篇进行配置:
GitLab 自动触发 Jenkins 构建


step2:配置jenkins
打开项目配置
Builder triggers>>取消勾选Push Events 选项,然后把有关merge request events 的选项勾上(如果不去掉push events 当分支发生push时,jenkns还是会构建)

step3:测试配置结果
在gitlab 发送一个push的请求,可以看到jenkins已经不会构建了
再测试发送一个 merge request

发现jenkins已经在进行构建了

方式2:利用jenkins进行配置,只有当master代码产生push时,才进行构建,这个很简单
我们可以通过jenkins>>Builder triggers 配置正则匹配,只有当master分支发生改变时才会触发jenkins。
step1:打开项目配置
Builder triggers>>Advanced>>Allowed branches>>Filter branches by regex>>Target Branch Regex>>填写master>>保存配置

注意:这次要勾选 push events 
step2:测试配置结果
a.当开发在dev分支push时,jenkins不会再进行构建
b.当开发在 master push时,jenkins进行构建了
至此就实现了我想要实现的效果:只有master分支会触发jenkins进行构建
我遇到坑:
如果我使用方式2配置了过滤分支的正则表达式(同时勾选了push events ),gitlab发送请求的时候就会报错

造成这个问题的原因是,我的正则表达式写错了,晕~
应该是master 而不是*master

我参考的文章,谢谢前人zai树,让后人可以乘凉
配置github的pull request触发jenkins自动构建
jenkins定位master分支构建
配置GitHub pull request时jenkins自动构建
jenkins实现master变化时,才触发构建(过滤分支)的更多相关文章
- Jenkins触发构建
目录 一.简介 二.时间触发 定时触发 轮询代码仓库 三.事件触发 由上游任务触发 gitlab通知触发 四.通用触发接口 GWT 提取参数 触发某个具体项目 过滤请求值 控制打印内容 控制响应 一. ...
- 自动化部署-svn hook触发构建
目的 之前是通过轮询的形式,2分钟更新一次svn,即时性不高,现在想要实现提交代码时直接触发构建 方案 使用svn的服务器hook,当有代码提交时请求jenkins api实现构建 具体实现 1.je ...
- el-select和el-cascader的visible-change下拉框隐藏时触发相关事件(下拉框下拉显示时不触发)
原文:https://blog.csdn.net/CarryBest/article/details/79959389 今天做项目时,用elementUI框架,需要下拉框隐藏时出发某个函数,用了vis ...
- 使用Jenkins时,如果GIT_COMMIT无变化,跳过构建
使用Jenkins时,如果GIT_COMMIT无变化,跳过构建 使用插件: conditional-buildstep A buildstep wrapping any number of ot ...
- Jenkins教程(七)实现 GitLab 提交/合并代码触发构建
楔子 最近公司推行统一构建平台(基于 Jenkins + Kubernetes 插件创建 slave),原来部门自建的 Jenkins 不让用了. 迁移上统一构建平台的最大阻力是前端模块发布的问题: ...
- Gitlab+Jenkins学习之路(十一)之Jenkins自动触发构建和发布
思路图: 一.下载gitlab plugin jenkins-->系统管理-->管理插件-->下载并安装gitlab plugin 二.配置gitlab认证 路径:Jenkins-- ...
- 【06】Jenkins:Gitlab 自动触发构建以及钉钉通知
写在前面的话 在某些时候,我们希望能够实现这样一个功能,当用户提交东西到 gitlab 上的时候,希望它能够自动触发构建,发布到我们需要的环境. 目前我们内部有做类似的需求:产品提交原型到 gitla ...
- Jenkins使用四:Jenkins创建任务,实现代码有改动时,自动构建
新建任务 指定在哪台节点运行 添加要监控的git地址和使用账号,此账号为设置节点时配置公私钥时设置的ssh登录账号 设置检查代码是否有变更的频率,每三分钟检查一次,如果检查到有变更就构建 修改文件再提 ...
- CICD | Jenkins & Gitlab集成:WebHook触发构建
在上一篇博客中,我们学习了Jenkins的搭建和插件+流水线的基本使用方法,Jenkins极大地提升了部署效率. 最近想学习一下如何集成GitLab webhook,实现进一步解放双手,目标: 推送( ...
随机推荐
- 微信小程序(一)--微信小程序的介绍
一.微信小程序简介 小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用.也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题.应用将无 ...
- Java连接SQL Server:jTDS驱动兼容性问题
Java连接SQL Server 2000数据库时,有两种方法: (1)通过Microsoft的JDBC驱动连接.此JDBC驱动共有三个文件,分别是mssqlserver.jar.msutil.jar ...
- 7、numpy——广播
1.广播的引出 广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行. 如果两个数组 a 和 b 形状相同,即满足 a. ...
- 【学习总结】Python-3-round()函数的奇进偶弃的问题
参考: 本教程的评论区:菜鸟教程-Python3-Python数字 "4舍6入5看齐,奇进偶不进" 取代"四舍五入". round()函数: 可以在第二个参数指 ...
- Java实现ArrayList
说明都在注释: package adt.array; import java.util.Iterator; import java.util.NoSuchElementException; /** * ...
- ubuntu开发c/c++帮助文档
1.C语言库函数基本的帮助文档 sudo apt-get install manpages sudo apt-get install manpages-de sudo apt-get install ...
- proc - 进程信息伪文件系统
描述 /proc 是一个伪文件系统, 被用作内核数据结构的接口, 而不仅仅是解释说明 /dev/kmem. /proc里的大多数文件都是只读的, 但也可以通过写一些文件来改变内核变量. 下面对整个 / ...
- ssh - OpenSSH SSH 客户端 (远程登录程序)
总览 (SYNOPSIS) ssh [-l login_name ] hostname | user@hostname [command ] ssh -words [-afgknqstvxACNTX1 ...
- 各种条码的校验码算法(EAN13,COD128,GTIN,UCC等)
校验码是由编码方案决定的,所以在代码中是否使用校验码和条码基本无关,但商品条码除外.今天给大家介绍几种校验码的计算方法. 一.商品条码: 商品条码中需要计算校验码的有:EAN-8(8位),EAN-13 ...
- MetaException(message:For direct MetaStore DB connections, we don't support retries at the client level.)
在mysql中执行以下命令: drop database hive; create database hive; alter database hive character set latin1 ...