Jenkins pipeline job 根据参数动态获取触发事件的分支
此文需要有Jenkins pipeline job 的简单使用经验
场景
我们日常的测试函数, 一般是不能仅仅在本地跑的,还需要一个公共的跑测试的环境,作为合并新的PR的依据。
如果用Jenkins 作为自动跑新分支test任务的环境的话,就会面临一个问题:如何切换到PR请求对应的分支去跑test。
Jenkins 不能直接获取触发事件的git分支
自己在网上查了一下,发现网上现有的 Jenkins自动切换分支的帖子 ,要么创建了多个Jenkins job,用过滤规则去实现不同的分支触发不同的Jenkins;要么就是搞了个参数化构建,
自己手动的去选择不同的分支触发。
这两种方式,前者有可能建了一堆job,一旦有变动维护起来十分的痛苦。后者还得手动执行,一点都不酷。所以皆非我们所求。
通过Jenkins 参数、shell、git实现单job自动切换不同的分支
1,Jenkins 参数
在job里 勾上 print post content ,我们可以看到job 的触发方式的参数或者说内容有哪些:
GenericWebhookEnvironmentContributorReceived:{"object_kind":"push","before":"d367a9948012f82095a8ead45a910672b","after":"bf0bb41b9b89e7ee77d4eefd5d83ee17f33a6f54","ref":"refs/heads/develop","checkout_sha":"bf0bb41b9b89e7ee77d4eefd5d83ee17f33a6f54","message":null,"user_id":142,"user_name":"xuao","user_email":"xao@sinail.com","project_id":531,"repository":{"name":"bizsvc","url":"ssh://git@172.0.0.0:10022/is/zsvc.git","description":"业务逻辑和页面服务。","homepage":"[http://172.16.99.4:10080/ibis/bizsvc](http://172.16.99.4:10080/ibvc)","git_http_url":"http://172.16.4:10080/ivc.git","git_ssh_url":"ssh://git@172.16.99.4:10022/ibsvc.git","visibility_level":10},"commits":[{"id":"de3e8d89cb73db90349505ed6de439f","message":"调试用临时分支\n","timestamp":"2019-04-04T14:25:54+08:00","url":"http://172.16.99.4:10080/ibis/bizsvc/commit/de3e8d89cb73db40099034a59bd9505ed6de439f","author":{"name":"wanglan","email":"wanglan_9999@163.com"}},{"id":"bf0bb41b9b89e7ee77d4eefd5d83ee17f33a6f54","message":"Merge branch 'ttt' into 'develop'\r\n\r\n调试用临时分支\r\n\r\n\r\n\r\nSee merge request !863","timestamp":"2019-04-04T06:31:51+00:00","url":"[http://172.16.99.4:10080/ibis/bizsvc/commit/bf0bb41b9b89e7ee77d4eefd5d83ee17f33a6f54](http://172.16.99.4:10080/ibis/bizsvc/commit/bf0bb41b9b89e7ee77d4eefd5d83ee17f33a6f54)","author":{"name":"xumenghao","email":"xumenghao@sinorail.com"}}],"total_commits_count":2}Contributing variables:ref = refs/heads/develop</pre>
这里边的ref 就是我们要的关键参数
下边看看怎么取出来
Jenkins 的pipeline job 里的触发方式选择 Generic Webhook Trigger,勾上 展开后,在 Post content parameters 里可以填写参数。前两个框分别填上 ref 和 $.ref, 如下图:
这样,就可以在pipeline脚本里使用这个 ref变量了。
2, 处理参数和切换分支
此时,pipeline脚本内即可直接引用ref变量了。我们给我们要用的容器 安装个git,然后commit 一下当做跑test 的容器,就可以再脚本里用git 自动切换分支了。 具体看注释。
# 获取refs/heads/develop 最后一个‘/’之后的内容。即develop
branch=${ref##*/} echo $branch
# 附送 跳过一般不用验证的分支if [ $branch = "develop" ] || [ $branch = "staging" ] || [ $branch = "master" ]; thenecho " It's develop , staging or master branch, exit " && exit 0figit checkout $branch
这个脚本之后写我们的test 的正常的逻辑,就ok了,可以按照分支自动切换执行了。
转载于:https://www.cnblogs.com/mingbai/p/Jenkins.html
Jenkins pipeline job 根据参数动态获取触发事件的分支相关推荐
- 获取触发事件的元素的ID
有什么方法可以获取触发事件的元素的ID? 我在想类似的东西: <html><head><script type="text/javascript" s ...
- js第8章事件案例:获取触发事件的元素,阻止事件冒泡和默认行为的实现、缓动的小球、图片放大特效、按Enter键切换
目录 1.获取触发事件的元素,阻止事件冒泡和默认行为的实现. (1)获取触发事件的元素 (2)阻止事件冒泡 (3)阻止事件默认行为 2.缓动的小球,实现的原理是通过定时器连续地修改当前DOM元素的某个 ...
- jenkins pipeline的parameters参数介绍
这个指令允许我们为一个声明式流水线指定项目参数.这些参数的输入值可以来自一个用户或者一个API调用. 下面列举了所有合法的参数类型,以及他们的描述和示例: booleanParam 这是基本的true ...
- 怎么样用javascript获取触发事件的对象
1 < script language = " javascript " > 2 document.onclick = onClick; // 当用户在文档中点 ...
- web3获取所有事件日志与解码
获取所有事件&解析参数 封装获取所有事件的方法 const getEvents = (address, topic0, fromBlock = 1) => {return new Pro ...
- jenkins动态获取gitlab分支
为什么要动态获取gitlab分支? 每个项目代码库都会有不同的分支,(如果你没有用多分支流水线的情况下)对于普通的流水线项目我们可以 让一条流水线来支持多个分支的发布,其实有时候你会发现每个分支的集成 ...
- Jenkins Pipeline动态使用Git分支名称的技巧
前言 在上一篇 Jenkins 使用环境变量 中,帮助大家使用一条 Docker 命令就可以快速玩转 Jenkins,同时用最简单的方式解释了 Jenkins 中让人混乱的环境变量,本文还是接着变量说 ...
- php微信支付参数动态配置,支付,微信开发_微信支付动态如何获取$jsApiParameters参数,支付,微信开发 - phpStudy...
微信支付动态如何获取$jsApiParameters参数 现在我们在做一个需要动态变换价格的微信支付页面,就是用户购买商品后,跳转到支付页面,但是可以选择几个不同的价格当中一个进行支付. 当跳到这个页 ...
- 事件冒泡及阻止事件冒泡 事件的触发 事件参数对象 获取用户按下键盘的键
事件冒泡及阻止事件冒泡 <!DOCTYPE html> <html lang="en"> <head><meta charset=&quo ...
最新文章
- 合并下载的Solaris镜像为DVD文件的方法
- LOJ 2721 「NOI2018」屠龙勇士——扩展中国剩余定理
- Java编写的五子棋小游戏
- 字符串MD5加密和产生一个随机密码的方法
- jMeter HTTP Request Defaults 的学习笔记
- ios修改了coredata数据结构后,更新安装会闪退
- php cpu缓存 执行 代码,缓存PHP页面的代码,可以减轻CPU和MYSQL负担
- 最快15分钟,完成高精度AI模型定制开发
- 线程创建 pthread_create 中自定义参数注意事项
- LeetCode962. 最大宽度坡
- 【30天精通JavaScript ~ 网络篇】JavaScript 网络请求与远程资源
- linux安装富士施乐打印机驱动下载,Ubuntu 8.04下安装Xerox打印机记录
- 操作系统-消息,消息队列
- Windows10重装、安装 超级详细、小白教程 官方正版安装
- vs编译运行报错:未声明的标识符
- IB36分斩获藤校?看艺术设计类专业
- 动手学深度学习笔记(一)——权重衰退
- 计算机主板上安装有芯片组,解决方案:计算机主板上安装了哪些硬件设备?
- udp端口不可达 icmp
- c语言partition头文件,c语言_头文件_windows.h
热门文章
- oracle 11g r2 rac到单实例的dg
- Ping突然出现请求超时的问题
- 迷失第一季/全集Lost 1迅雷下载
- 函数式编程 读书笔记
- 移动端上传照片 预览+Draw on Canvas's Demo(解决 iOS 等设备照片旋转 90 度的 bug)...
- ElasticSearch中doc values和fielddata
- 华为鸿蒙理性,华为的理性,鸿蒙的节奏
- (220)FPGA内部组成LUT介绍
- vs2017调用linux脚本,[代码] ShellExecute调用外部程序_VS2017
- mysql连接编码设置_MySQL基础 - 编码设置