可以阻止 GitLab Webhook 在 Jenkins 中触发构建吗

Posted

技术标签:

【中文标题】可以阻止 GitLab Webhook 在 Jenkins 中触发构建吗【英文标题】:Can a GitLab Webhook be stopped from triggering build in Jenkins 【发布时间】:2019-04-25 12:04:07 【问题描述】:

我有一个带有 WebHook 的 GitLab 项目,它触发了 Jenkins 作业。截至目前,我已启用推送事件来触发 Jenkins 作业。因此,每当我将代码从本地计算机推送到远程存储库时,Jenkins 作业都会自动触发,并且该作业通过从 GitLab 的主分支中检出代码成功地构建了我的代码库。

是否有一个选项可以让 Webhook 触发 Jenkins 仅在其提交消息包含指定字符串(如“build jenkins”)的此类推送事件上构建?

我假设上面的答案是否定的,因为 Webhook 已经配置并且无法停止。但是,我阅读了一些关于在远程存储库上创建自定义钩子的信息,这可以帮助我。如果这是真的,我该怎么做?我需要在哪里编写自定义钩子以及如何使用它?

谢谢

【问题讨论】:

你在使用 gitlab 钩子插件吗?您可以阅读 webhook 有效负载中的提交消息并决定是否运行您的构建。 github.com/jenkinsci/gitlab-hook-plugin/blob/master/README.md 谢谢@ben5556。我快速浏览了一下,看起来我没有使用 gitlab 钩子插件 build_now。会试试看。但是,我想知道的是,这是否会触发 Jenkins 的工作。是会启动作业,然后读取 webhook 有效负载中的提交消息并中止作业,还是根本不会启动作业? 我建议有一个由 gitlab 钩子触发的作业,然后根据提交消息触发您的实际作业。您还可以扩展它以根据 webhook 来自的 repo、分支和提交消息触发您的任何其他作业。 我们使用不同的插件 - 通用 Webhook 触发器插件,它工作得很好!看看wiki.jenkins.io/plugins/servlet/… 完美。这工作@ben5556。谢谢! 【参考方案1】:

推荐使用通用 Webhook 触发器插件 - https://wiki.jenkins.io/display/JENKINS/Generic+Webhook+Trigger+Plugin

【讨论】:

以上是关于可以阻止 GitLab Webhook 在 Jenkins 中触发构建吗的主要内容,如果未能解决你的问题,请参考以下文章

k8s的Mutating webhook

利用GitLab webhook来实现触发Jenkins自动操作

在gitlab通过webhook触发Jenkins的job中用script获取当前分支

Gitlab webhook 可以用来触发 Tekton Pipelines 吗?

如何从 Gitlab webhook 事件负载中获取项目名称

集成时抛出 GitLab Webhook 错误