触发某个具体项目
上面可以看到GenericTrigger方法有一个token参数
GenericTrigger(
token:
'secret',
-
)
}
token参数的作用是标识一个pipeline在Jenkins中的唯一性(当然,没有人阻止你让所有的pipeline使用同-个token)。
为什么需要这个参数呢?这要从GWT插件的原理说起。当Jenkins接收到generic-webhooktriggerlinvoke接口的请求时,会将请求代理给GWT插件处理。GWT插件内部会从Jenkins实例对象中取出所有的参数化Jenkins项目,包括pipeline然后进行遍历。
如果在参数化项目中GenericTrigger配置的token的值与Webhook请求时的token的值一致,则触发此参数化项目。如果多个参数化项目的token值一样,则它们都会被触发。
pipeline的token可以被设置为Jenkins的项目名 比如:
triggers {
-
GenericTrigger(
-
//省略
token: env.JOB_NAME,
-
//省略
-
)
}
过滤请求值
上节所说的不完全正确。GWT并不只是根据token值来判断是否触发,还可以根据我们提取出的值进行判断。
示例如下:
GenericTrigger(
genericVariables:[
-
[key:
' refValue',value:
'$.ref']
-
],
token: env.JOB_NAME,
regexpFilterText:'$refValue',
regexpFilterExpression:
'refs/heads/(master|dev)'
)
- 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状态码,不返回触发结果。