更新声明性管道作业的cron触发器不会更新触发器

时间:2019-02-12 04:54:57

标签: jenkins jenkins-pipeline jenkins-declarative-pipeline

我有一个声明的管道作业,定义为管道脚本(不是SCM的管道)。它有一个cron触发器:

triggers {
    cron('H */4 * * 1-5')
}

我已经按需运行了几次,并触发了cron,到目前为止一切都很好。现在,如果我更改了cron触发器,詹金斯不会接管所做的更改,那么在我强制执行作业之前,旧触发器仍然有效。

如何让Jenkins使用更改后的触发器而无需手动运行作业?我认为问题确实可以扩展到任何声明性的作业定义更改,我如何让詹金斯在不被迫运行作业的情况下更新作业设置。

2 个答案:

答案 0 :(得分:1)

简而言之,目前,在撰写本文时,您还不能。

我通过添加“ noop”选项来解决参数化管道的问题,并确保在选择此选项时我的管道不执行任何操作。这样,工作就可以运行,但是没有副作用。

如果未对您的管道进行参数化,则正如我所说,我们目前运气不好。

答案 1 :(得分:1)

这与詹金斯管道的工作方式有关。触发以及其他作业配置仅在作业执行一次之后才自行加载到Jenkins中。这只是一个鸡蛋和鸡肉的问题。

由于管道作业应该位于存储它的地方(例如,Github),因此您应该考虑从那里触发它,并使用一些内部逻辑来决定是否运行它。

此解决方案的复杂性应该与您更新触发器的时间有关。