zoukankan      html  css  js  c++  java
  • 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:	est.properties
    • 1

    如下图:

    这里写图片描述

    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:	est.properties" --form json="{"parameter": [{"name":"test.properties", "file":"file0"}]}
    • 1

    如下图:

    这里写图片描述

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

    • 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

  • 相关阅读:
    oracle session和process的关系
    Oracle 连接、会话数的查看,修改
    Oracle 中session和processes的初始设置
    Oracle 修改字段注释
    Oracle创建自增字段和修改方法-ORACLE SEQUENCE的简单介绍
    Oracle 字段类型
    ORA-01591错误的原因和处理方法
    Oracle 优化器
    Oracle 使用TRUNCATE TABLE删除所有行
    Oracle中Hint深入理解(原创)
  • 原文地址:https://www.cnblogs.com/jiangzhaowei/p/10031678.html
Copyright © 2011-2022 走看看