1

我正在尝试从 Github 生成一个 webhook,以在功能分支合并到特定分支(例如master)时触发构建。我正在使用 Jenkins 中的“通用 Webhook Trigger ”插件来执行此操作,因为找不到任何其他合适的插件。

我发现我可以引用有效载荷中的两个变量。

  • payload.ref==“裁判/负责人/主人”
  • payload.commits[1].message火柴Merge pull request*

但是,在插件中,我似乎只能设置一个过滤器。有没有办法设置多个过滤器?

4

1 回答 1

0

我通过使用regexpFilterExpression.

首先,您需要将推送事件所针对的分支名称放入ref通过将其添加到GenericTrigger类中来命名的变量中:

genericVariables: [
    [key: 'ref', value: '$.ref'],
    [key: 'commit_titles', value: '$.commits[*].title']
]

现在我们需要触发器有效负载中提交的所有标题,因此为它添加另一个变量

[key: 'commit_titles', value: '$.commits[*].title']

然后我们需要通过在类中定义regexpFilterText属性来组装将应用过滤器的字符串GenericTrigger

...
regexpFilterText: 'BRANCH: $ref COMMIT_TITLES: $commit_titles END',
...

变量将被替换。

然后是时候定义实际的过滤器了

...
regexpFilterExpression: "BRANCH: refs/heads/master COMMIT_TITLES: .*?(Merge pull request).*? END"
...

完整示例:

properties ([
    pipelineTriggers([
        [$class: 'GenericTrigger',
            genericVariables: [
                [key: 'ref', value: '$.ref'],
                [key: 'commit_titles', value: '$.commits[*].title']
            ],
            token: 'my secret token',
            causeString: 'Triggered because of $commit_titles in branch $ref',
            printContributedVariables: true,
            printPostContent: true,
            silentResponse: false,
            regexpFilterText: 'BRANCH: $ref COMMIT_TITLES: $commit_titles END',
            regexpFilterExpression: "BRANCH: refs/heads/master COMMIT_TITLES .*?(Merge pull request).*? END"
        ]
    ])
])
于 2021-09-09T17:14:28.287 回答