如何通过Jenkins Webhook Trigger仅在事件成功/失败时触发流水线
Jenkins Webhook Trigger 正则过滤解决方案
需求说明
通过Jenkins Webhook Trigger插件实现:仅当收到的JSON事件中message字段值为**"Helm upgrade succeeded"或"Helm upgrade failed"**时触发流水线,其他事件不触发。此前尝试($failed|$success)、(failed|success)等正则均无效。
事件日志示例:
{"involvedObject":{"kind":"HelmRelease","namespace":"flux-system","name":"my-release","uid":"1f86243d-bcd9-4e0a-b078-c9df8f9441ac","apiVersion":"helm.toolkit.fluxcd.io/v2beta1","resourceVersion":"1466894"},"severity":"info","timestamp":"2023-10-25T06:20:18Z","message":"Helm upgrade succeeded","reason":"info","metadata":{"revision":"6.5.2"},"reportingController":"helm-controller","reportingInstance":"helm-controller-578bd944df-m9sgx"}
正确正则表达式
根据插件的匹配方式选择对应正则:
- 针对完整请求体匹配:如果插件只能对整个JSON payload做正则校验,使用绑定字段名的完整正则,确保匹配的是
message字段的目标值:"message":"Helm upgrade (succeeded|failed)" - 针对提取后的message字段匹配:如果插件支持通过JSON路径提取
message字段的值(比如使用$.message),直接对字段值做匹配即可:Helm upgrade (succeeded|failed)
此前正则无效的原因
($failed|$success):$表示字符串结尾,而目标字符串是Helm upgrade succeeded,结尾为ed,并非直接以failed/success结尾,因此无法匹配。(failed|success):未关联message字段,可能匹配到JSON中其他包含该关键词的字段,或者插件未将匹配范围限定到message字段,导致触发逻辑不符合预期。
内容的提问来源于stack exchange,提问作者damini chopra
相关产品推荐
相关产品推荐

