我有一个声明性的管道作业,它被定义为一个管道脚本(不是SCM中的管道)。它有一个cron触发器:
triggers { cron('H */4 * * 1-5') }
我已经按需运行过几次cron触发器,到目前为止一切都很好,现在如果我更改cron触发器,jenkins不会接受更改,旧的触发器仍然有效,直到我强制运行作业。我如何让Jenkins使用更改的触发器而不手动运行作业?我认为这个问题可以扩展到任何声明性作业定义更改实际上,我如何让Jenkins更新作业设置而不被迫运行作业。
wmvff8tz1#
这与Jenkins管道的工作方式有关。触发以及其他作业配置只有在作业执行一次后才加载到Jenkins本身。这只是鸡蛋和鸡的问题。由于流水线作业应该在存储它的地方(例如Github)的上下文中,因此您应该考虑从那里触发它,然后使用一些内部逻辑来决定是否运行它。此解决方案的复杂性应该与更新触发器的次数有关。
dtcbnfnu2#
简而言之,目前,在写作时,你不能。我通过添加一个“noop”选项来解决参数化管道的这个问题,并确保当选择这个选项时,我的管道什么也不做。这样,作业运行,但没有副作用。如果你的管道没有参数化,我们目前,正如我所说,运气不好。
2条答案
按热度按时间wmvff8tz1#
这与Jenkins管道的工作方式有关。触发以及其他作业配置只有在作业执行一次后才加载到Jenkins本身。这只是鸡蛋和鸡的问题。
由于流水线作业应该在存储它的地方(例如Github)的上下文中,因此您应该考虑从那里触发它,然后使用一些内部逻辑来决定是否运行它。
此解决方案的复杂性应该与更新触发器的次数有关。
dtcbnfnu2#
简而言之,目前,在写作时,你不能。
我通过添加一个“noop”选项来解决参数化管道的这个问题,并确保当选择这个选项时,我的管道什么也不做。这样,作业运行,但没有副作用。
如果你的管道没有参数化,我们目前,正如我所说,运气不好。