Jenkins触发构建--通用触发接口(下)

2021-06-02 17:51:27 浏览数 (1)

触发某个具体项目

上面可以看到GenericTrigger方法有一个token参数

  1. GenericTrigger(
  2. token: 'secret',
  3. )
  4. }

token参数的作用是标识一个pipeline在Jenkins中的唯一性(当然,没有人阻止你让所有的pipeline使用同-个token)。

为什么需要这个参数呢?这要从GWT插件的原理说起。当Jenkins接收到generic-webhooktriggerlinvoke接口的请求时,会将请求代理给GWT插件处理。GWT插件内部会从Jenkins实例对象中取出所有的参数化Jenkins项目,包括pipeline然后进行遍历。

如果在参数化项目中GenericTrigger配置的token的值与Webhook请求时的token的值一致,则触发此参数化项目。如果多个参数化项目的token值一样,则它们都会被触发。

pipeline的token可以被设置为Jenkins的项目名 比如:

  1. triggers {
  2. GenericTrigger(
  3. //省略
  4. token: env.JOB_NAME,
  5. //省略
  6. )
  7. }

过滤请求值

上节所说的不完全正确。GWT并不只是根据token值来判断是否触发,还可以根据我们提取出的值进行判断。

示例如下:

  1. GenericTrigger(
  2. genericVariables:[
  3. [key: ' refValue',value: '$.ref']
  4. ],
  5. token: env.JOB_NAME,
  6. regexpFilterText:'$refValue',
  7. regexpFilterExpression: 'refs/heads/(master|dev)'
  8. )
  • regexpilterText: 需要进行匹配的key。例子中,我们使用从POST body中提取出的refValue变量值。
  • regexpFilterExpression :正则表达式。

如果regexpFilterText参数的值符合regexpilterExpression参数的正则表达式,则触发执行。

控制打印内容

打印日志有助于调试。GWT插件提供了三个参数。

  • printPostContent :布尔值, 将Webhook请求信息打印到日志上。
  • printContributedVariables:布尔值,将提取后的变量名及变量
  • 值打印出来。
  • causeString :字符串类型,触发原因可以直接引用提取后的变量,如causeString : ‘Triggered on $msg’。

控制响应

GWT插件最近才加入的一个参数: silenResponse: 布尔类型,在正常情况下当Webhook请求发布成功后,GWT插件会返回HTTP 200状态码和触发结果给调用方。但是当设置为true时,就只返回HTTP 200状态码,不返回触发结果。

0 人点赞