如何在Jenkinsfile中禁用scm更改的自动构建

num*_*s1x 18 jenkins jenkins-pipeline

我有一个Jenkins文件,我已经设置了cron一个pipelineTriggers参数.我似乎无法弄清楚如何禁止从合并到repo的主分支构建作业.Jenkinsfile中是否有一种方法可以禁用scm更改中的自动构建?

Chr*_*Orr 23

如果您使用的是Multibranch Pipeline,您应该可以在作业的Configure页面上执行此操作:

  1. 向下滚动到"分支来源"
  2. 在"物业策略"下,选择"命名分支获取不同属性"
  3. 单击"添加例外",输入"master"作为分支名称
  4. 单击"添加属性",选择"抑制自动SCM触发"
  5. 保存

这样可以防止对master分支的更改触发相应作业的构建.

  • 你知道是否可以在Jenkinsfile本身中指定一些方法? (9认同)
  • 现在不建议这样做,还有其他解决方案吗? (6认同)
  • 这对单个多分支管道非常有用,但对分支配置源管道(例如Github Org,Stash等)的精细控制没有帮助,在分支源管道中,作业配置适用于整个项目层次结构。Jenkinsfile是这样做的逻辑所在,但是历史上有许多“已中止”的构建(就像在其他解决方案中一样)很丑陋,因此仍然需要更好的解决方案(例如:properties [autoScmTrigger:false]) (3认同)
  • @Akom 有更好的解决方案吗?我正在使用团队/项目,需要一个解决方案。 (2认同)
  • @yusuftezel,不,但请参阅这些票,以防讨论发生在某个地方:https://issues.jenkins-ci.org/browse/JENKINS-35988 https://issues.jenkins-ci.org/browse/JENKINS-43842 (2认同)

flu*_*lup 5

对于声明性管道,请使用when带有triggeredBy条件的指令,例如

when { triggeredBy 'TimerTrigger' }
Run Code Online (Sandbox Code Playgroud)

  • 有什么方法可以对整个管道执行此操作,而不是在每个阶段使用“when”? (3认同)

小智 0

如果您使用 SCM 中的 Pipeline 脚本,请注释掉 Jenkins 文件中的触发器部分(SCMPoll/BuildPeriodically 选项),如下所示。

//触发器 {cron('H/15 * * * *')} //pipelineTriggers([pollSCM('H/15 * * * *')])

如果您使用 Pipeline 脚本,则禁用 PollSCM/Build 定期(以使用的为准)选项。