Build 詹金斯:在不触发构建的情况下更新SCM?

Build 詹金斯:在不触发构建的情况下更新SCM?,build,continuous-integration,hudson,jenkins,Build,Continuous Integration,Hudson,Jenkins,我们有一个SCM控制的项目,每隔几分钟轮询一次回购协议。总的来说,工作流程很棒,但有时我需要将新更改推送到服务器的存储库,而不触发Jenkins中的构建(出于各种原因:长构建、小更改、并发提交等) 我已经设置了一个静默期,有时我只是开始和停止构建(这很尴尬),因此Jenkins会进行更改,以后不会触发构建 那么,是否有任何类型的插件允许: 手动取消未来生成(在SCM轮询器触发之前) 是否在不触发生成的情况下手动更新项目的SCM repo 看看: 您应该仅将构建触发器配置为“定期构建”(不使用“

我们有一个SCM控制的项目,每隔几分钟轮询一次回购协议。总的来说,工作流程很棒,但有时我需要将新更改推送到服务器的存储库,而不触发Jenkins中的构建(出于各种原因:长构建、小更改、并发提交等)

我已经设置了一个静默期,有时我只是开始和停止构建(这很尴尬),因此Jenkins会进行更改,以后不会触发构建

那么,是否有任何类型的插件允许:

  • 手动取消未来生成(在SCM轮询器触发之前)
  • 是否在不触发生成的情况下手动更新项目的SCM repo
看看:


您应该仅将构建触发器配置为“定期构建”(不使用“池SCM”触发器),我认为这可能会完成此任务

您有很多解决方案可以做到这一点:

  • 您可以用另一种方式来完成,而不是轮询SCM并触发基于更改的构建。您可以让SCM决定提交是否应触发作业
  • 您可以尝试在作业的Subversion扩展属性中使用“Excluded Commit comments”属性,这样可以避免触发基于“无用提交”的构建
  • 另一个想法(不一定更好,但可能更适合你的口味):使用。使构建的其余部分以参数为条件(我们将其命名为DO\u build)。默认情况下,将该参数设置为TRUE。如果需要在不触发生成集的情况下提交某些内容,请将DO_build default设置为FALSE


    相同想法的一个变体:您在一个作业(触发器)中进行轮询,该作业在构建步骤中通过调用主作业。然后,构建步骤可以根据参数进行调整。请注意,在这种情况下,您必须为两个构建使用相同的自定义工作区,或者在主作业中执行手动签出(例如,在shell构建步骤中)

    塞德里克,你说得对,两种选择都是好的,都是合理的。遗憾的是,MercurialSCM还不支持类似的概念。关于第一个问题,有几个问题:您必须具有对SCM服务器的访问权限(我没有),并且您必须知道提交是次要的。我们还不断地向Jenkins添加新项目,因此为每个新项目配置SCM可能会很烦人。在考虑并阅读了Kohsuke对此()的意见后,我决定尝试使用服务器范围的post commit钩子。对于Mercurial,这里有一个指南:谢谢链接,eyossi。插件已经完成了大部分工作,我会尝试一下,然后回来。