Jenkins 更新声明性管道作业';s cron触发器不';t更新触发器

Jenkins 更新声明性管道作业';s cron触发器不';t更新触发器,jenkins,jenkins-pipeline,jenkins-declarative-pipeline,Jenkins,Jenkins Pipeline,Jenkins Declarative Pipeline,我将声明性管道作业定义为管道脚本(不是来自SCM的管道)。它有一个cron触发器: triggers { cron('H */4 * * 1-5') } 我已经按需和cron触发运行了几次,到目前为止一切都很好。现在,如果我更改cron触发器,jenkins不会接受更改,旧的触发器仍然有效,直到我强制运行作业 如何让Jenkins在不手动运行作业的情况下使用更改的触发器?我认为这个问题可以扩展到任何声明性作业定义更改。真的,我如何让jenkins更新作业设置而不被迫运行作业。简言之,在

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

triggers {
    cron('H */4 * * 1-5')
}
我已经按需和cron触发运行了几次,到目前为止一切都很好。现在,如果我更改cron触发器,jenkins不会接受更改,旧的触发器仍然有效,直到我强制运行作业


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

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

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


如我所说,如果您的管道没有参数化,那么我们目前的运气不佳。

这与Jenkins管道的工作方式有关。触发以及其他作业配置仅在作业执行一次后加载到Jenkins it self中。这是一个简单的鸡蛋和鸡的问题

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


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

您是否尝试从管道本身删除cron触发器,并使用“定期生成”部分的触发器?@BigGinDaHouse可以工作,但无法将整个管道点作为代码。我知道是这样,但这至少是一个解决方案,除非根据他们的文档找到合适的解决方案,否则这是可能的-更改触发器中的cron,您会发现Jenkins不会在您的计划中选择更改,直到它再次运行。没错,这是个问题,但是,如果你再跑一次,它就会恢复,很明显,你必须跑一次,但这并不意味着詹金斯不支持它,但让我们说,支持与限制不是我希望听到的:(但谢谢@AndrewGray