Jenkins job 之间实现带参数触发

1 背景

开发打包的 jenkins job A 是在 local 的一台 windows 上,同时在这台 local 的 windows 上还有一 另一个 jenkins job B 是用来上传 job A 生成的包(build)到测试平台的仓库(比如 saucelabs storage)。然而 我们测试的 jenkins job C 是在 azure 上的一台 windows server 2012 上。我们期望的是当 job A 一旦有包(build)生成就传递 build number 给 job B 同时触发 job B 运行,一旦 Job B 运行就会 上传 build 到测试平台的仓库,接着由 job B 把 build number 传递给 Job C 同时触发,job C 运行。那么 问题就来了 job B 和 Job C 不在同一台机器,job B 怎么实现传参数远程触发 job C 呢? 下面 我们分两部分来介绍。

2 同一 jenkins 传参触发

要实现同一 jenkins 上的 job A 传递参数(build number)并触发 job B 运行我们需要做的步骤如下:

1、首先安装 jenkins 参数化插件:Parameterized Trigger Plugin。

2、对 Job A 进行配置;在 Job A 配置面板中 Post-build Actions 选项中选择 Trigger parameterized build on other projects ,如下图:

3、对 Job B 进行配置;在 JobA 中配置了 build_number 参数,在 B job 中要使用此参数,那么需要在Job B 的配置界面中勾选 The build is parameterized。具体配置信息如下所示:

4、检查参数是否成功的由 Job A 传给了 Job B;在 job B 的 windows bat 窗口输入如下命令,在 job B 的控制查看输出参数是否正确。如下图:

经过上面几步我们就可以很容易的实现同一 jenkins 的传参触发,愉快的享用吧。

3 不同 jenkins 传参远程触发

要实现不同 jenkins 上的 job B 传递参数(build number)并触发远程机器上的 job C 运行我们需要做的步骤如下:

1、首先要把 Job A 传递给 Job B 的参数 build_number 以 key-vaule 的方式(便于 job C 读取参数使用和更新参数)写入属性文件(test.properties),在 Job B 中使用如下命令:

echo build_name="%build_number%" >> E:\test.properties

如下图:

2、获取 Job C 所在的 jenkins 的 API Token,如下图所示:

3、在 Job B 中使用 jenkins 的 remote API 通过 curl 命令行来传参数给 Job C 并触发 Job C 运行,具体命令如下:

curl -X POST http://192.168.181.11:8080/job/C/build --user linda:2a2511f75356f6691f6049bf9ee3806b  --form file0=@"E:\test.properties" --form json="{\"parameter\": [{\"name\":\"test.properties\", \"file\":\"file0\"}]}

如下图:

上面执行的命令参数说明:

  • 192.168.181.11:8080 是 job C 所在的 windows 2012 sever 的 ip 地址;
  • C 是 job 的名称,这里我们触发的是 Job C;
  • linda:2a2511f75356f6691f6049bf9ee3806b 中 linda 是 jenkins 用户名,2a2511f75356f6691f6049bf9ee3806b 是 jenkins 的 API Token;

4、既然是通过文件传递参数那么 Job C 也要配置接收。如下图:

经过上面几步我们就可以很容易的实现不同 jenkins 传参远程触发,愉快的享用吧。总之这样一来当 job A 带参数触发了 job B,Job B 带参数文件触发 Job C,你会看到在 Job C 的根目录下有了参数文件test.properties,这样就可以在 Job C 中使用该参数去测试平台的仓库获取对应的 build 来进行全自动化测试。

附上 jenkins remote api 的 URL: https://wiki.jenkins.io/display/JENKINS/Remote+access+API

(0)

相关推荐

  • git+jenkins在windows机器上新建一个slave节点

    前言 我们在跑自动化项目的时候,希望有单独的测试机能跑自动化项目,并且能集成到jenkins上构建任务.如果公司已经有jenkins环境了,那无需重新搭建. 只需在现有的平台基础上,新增一个slave ...

  • 伦敦上空惊现透明泳池,架在公寓楼之间,带火两栋楼

    本文授权转自:一起设计 ID:together-design Embassy Gardens 是位于伦敦南岸的一个综合住宅开发项目,拥有自己的绿地.艺术步道.商店.餐厅和咖啡厅,为居民提供了绝佳的城市 ...

  • 细品呼吸机参数--触发 1

    触发(trigger)是呼吸机中非常常见的一个参数. 触发 我的理解比较简单,就是一个阈值,患者告诉呼吸机"我要吸气",能让呼吸机判断患者是否开始吸气,因为呼吸机的送气需要满足患者 ...

  • 思维训练4.函数带参数如何确定零点存在,以一道导数题为例

    经常看到一类题型,即在判断函数零点个数中或者根据函数零点个数求参数取值范围的题目中,如果函数含有参数a,且不知道参数a的具体范围,假设f(x)存在唯一的极小值点x0,那么根据单调性,函数的图像趋势可能 ...

  • 细品呼吸机参数--触发 2

    那完美的状态下,就能达到人机同步,患者想吸气,呼吸机及时送气.这就关系到三个点: 使用者(医生)设置的触发阈值,是适合患者的吸气需要,能灵敏的感知患者的吸气需要. 患者想吸气的时候,他/她的吸气用力能 ...

  • S7-200 SMART PLC带参数子程序

    在S7-200SMART系列PLC的子程序中,子程序可以分为两类,一类为不带参数的子程序,另一类为带参数的子程序,使用带参数的子程序可以进行重复调用或做成功能块方便要以后使用. 子程序可带参数,带参数 ...

  • VB6.0怎么调用带参数的DLL?

    vb6.0中可以创建DLL文件,也可以调用DLL文件,该怎么调用呢?下面我们就来看看详细的教程. 软件名称: msdn for vb6.0(vb6 msdn) 精简中文版 软件大小: 20.6MB 更 ...

  • 干货 | 如何创建带参数例行程序(实用型)

    特别说明 今天小辫辫要带你 利用带参数例行程序画一个小圈圈, 把你圈住和我一起学习 (●ˇ∀ˇ●) 坐稳啦,小辫辫要带你开车咯 <~嘟~嘟~嘟~> 在例行程序声明中可以加入参数,在调用该程 ...

  • S7-200系列PLC带参数子程序中如何使用定时功能

    一.导读 当我们在设计程序时,碰到具有相同的控制要求,如需要实现对多台电机进行控制,而这些电机的控制方式是相同的,或实现对某种重复的算法,如模拟量换算.基于这种情况,我们在设计程序时,往往会考虑编写带 ...

  • 深度解析S7-200系列PLC带参数子程序用法

    来源:技成培训 一.导读 当控制要求相同或具有相同的算法时,(如对电机的控制,若需要对多台电机进行控制,且每台电机具有相同的控制方式)此时可考虑根据该控要求,编写一个功能块,然后重复调用该功能块,然后 ...