【问题标题】:Triggering Jenkins Builds after GIT commitGIT 提交后触发 Jenkins 构建
【发布时间】:2015-09-25 15:19:16
【问题描述】:

我有两个构建工作。其中之一就是我所说的模板作业,它构建代码并将其推送到 Nexus。此构建是参数化的,它接受工件等参数。此构建从 GIT 中提取代码,并定义了 GIT 存储库。

另一个构建作业使用参数化触发器插件来调用模板作业。它将工件名称等参数提供给模板作业,然后执行构建。

我已经阅读了有关我可以创建的 Web 挂钩的信息,它会在向存储库提交提交后通知 Jenkins CI 触发构建。但是,通过阅读 GIT 插件文档,它说 GIT 插件只会为那些检查了“poll scm”的构建作业以及那些在作业配置中定义了 GIT 存储库的构建作业触发构建。

这有点进退两难,因为我们的模板作业是参数化的,而调用作业中没有定义 GIT。以这种方式配置作业背后的想法是最大限度地减少定义重复性作业所涉及的维护问题,然后在作业结构发生变化时返回它们。

如果有任何可用的插件可以触发特定的作业,或者参数化/模板化的作业结构可能不是可行的方法,请告诉我。我愿意接受所有建议。

【问题讨论】:

  • 为了简短起见:咬紧牙关,将 Git 配置添加到触发器作业中。这是做事的标准方式,可以长期减少您的头痛。添加复杂的插件/Git 挂钩架构会使事情变得不必要地复杂 - 如果可能,尽量避免这种情况。
  • 谢谢! - 我想这就是我们要做的。

标签: git maven github jenkins


【解决方案1】:

使用 webhook 与 Jenkins 集成比“轮询 SCM”方法高效得多,后者会给 Jenkins 和您的 git 存储库增加不必要的负载。这种不必要的负载可能会在较大的开发组织中导致性能问题。但是,如果您在较小的组织中,则性能可能不是问题,而且迁移到 webhook 模型的投资回报可能不存在。

除了避免 Poll SCM 之外,还有其他使用 webhook 的原因。一些插件具有可以提供其他好处的功能。如果您在 GitHub 上托管您的存储库,则一个示例是 GitHub 拉取请求构建器:

https://wiki.jenkins.io/display/JENKINS/GitHub+pull+request+builder+plugin

当然,GitHub 也需要配置为发送 webhook:

https://help.github.com/enterprise/2.10/admin/guides/developer-workflow/continuous-integration-using-jenkins/

提供参数化作业不能预防这样的设置,参数化触发器作业可用于在管道或类似配置中将作业链接在一起。 IIRC,如果你走这条路,你应该能够从 GitHub webhook 集成中获取 git 构建信息,否则你需要在工作之前使用其他一些方法(例如存储在 Jenkins 作业配置中)检索 git 信息参数化触发器调用。

总而言之,使用 webhook 设置的决定最终应归结为设置成本是否值得您获得的功能。如果您已经在使用 GitHub 并且想要构建拉取请求,那么设置 Jenkins 插件和配置 GitHub webhook 的成本并不高,并且您将获得一些非常有用的功能作为回报。另一方面,如果您将 git 存储库托管在某个专有堆栈上,并且您的唯一目标是在 20 人的开发环境中避免 Poll SCM,那么成本要高得多,价值回报也值得怀疑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    相关资源
    最近更新 更多