在GIT提交后触发Jenkins构建

时间:2015-07-07 22:22:41

标签: git maven github jenkins

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

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

我已经阅读了我可以创建的Web挂钩,它将通知Jenkins CI在对存储库进行提交后触发构建。但是,通过阅读GIT插件文档,它说GIT插件只会触发那些具有" poll scm"已签出,以及在作业配置中定义了GIT存储库的那些。

这是一个两难的问题,因为我们的模板作业是参数化的,并且调用作业没有在其中定义GIT。以这种方式配置作业背后的想法是最小化定义重复作业所涉及的维护问题,然后如果作业结构发生变化则返回它们。

如果有任何可用的插件能够触发特定的作业,或者参数化/模板化的作业结构可能无法实现,请告诉我。我对所有建议持开放态度。

1 个答案:

答案 0 :(得分:0)

使用webhooks与Jenkins集成比" Poll SCM"更有效率。为Jenkins和你的git repo添加不必要的负载的方法。这种不必要的负载可能会导致大型开发组织出现性能问如果你在一个较小的组织中,性能可能不是问题,转移到webhook模型的投资回报可能不存在。

除了避免使用民意调查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 webhooks集成中获取git构建信息,否则你将需要在作业之前使用其他方法(例如存储在Jenkins作业配置中)检索git信息。参数化触发器调用。

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