首页 > 解决方案 > 更新声明性管道作业的 cron 触发器不会更新触发器

问题描述

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

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

我已经按需运行了几次并触发了 cron,到目前为止一切都很好。现在,如果我更改 cron 触发器,jenkins 不会接受更改,旧触发器仍然有效,直到我强制运行作业。

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

标签: jenkinsjenkins-pipelinejenkins-declarative-pipeline

解决方案


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

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

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


推荐阅读