仅在管道中的某个步骤后才允许启动相同的 Jenkins 作业
Allow same Jenkins job to be launched only after a certain step in the pipeline
我目前有一个包含多个步骤的 Jenkins 管道作业,我只希望在前一个管道达到特定点时允许启动此管道的新 运行。
例如:
我的管道分为以下几个阶段:
A -> B -> C -> D -> E
如果我启动此管道两次,我希望第二个 运行 仅在第一个到达阶段 C 时启动。
谢谢
更新:
此管道由 Git 触发器启动,因此我想确保将处理 2 推送到回购中。
例如:
开发人员 A 推送提交并启动流水线
开发人员 B 推送了一个提交,但来自 DevA 的管道仍在 运行ning,所以我希望它等待
当 DevA Pipeline 到达阶段 C 我想允许来自 DevB 的 Pipeline 开始
您可能会使用 "Throttle Concurrent Builds Plugin" https://wiki.jenkins-ci.org/display/JENKINS/Throttle+Concurrent+Builds+Plugin
将 A、B 和 C 放在一组中,并且只允许该组有一个构建作业
我认为最"official"的方法是使用lockable resources plugin.(implemented as part of https://issues.jenkins-ci.org/browse/JENKINS-30269)
您可以使用 lock
步骤(包含在 lockable-resources-plugin
中。
您的脚本将如下所示:
lock('my-resource') {
stage('A') {...}
stage('B') {...}
stage('C') {...}
}
stage('D')
stage('E')
我目前有一个包含多个步骤的 Jenkins 管道作业,我只希望在前一个管道达到特定点时允许启动此管道的新 运行。
例如: 我的管道分为以下几个阶段: A -> B -> C -> D -> E
如果我启动此管道两次,我希望第二个 运行 仅在第一个到达阶段 C 时启动。
谢谢
更新:
此管道由 Git 触发器启动,因此我想确保将处理 2 推送到回购中。
例如:
开发人员 A 推送提交并启动流水线
开发人员 B 推送了一个提交,但来自 DevA 的管道仍在 运行ning,所以我希望它等待
当 DevA Pipeline 到达阶段 C 我想允许来自 DevB 的 Pipeline 开始
您可能会使用 "Throttle Concurrent Builds Plugin" https://wiki.jenkins-ci.org/display/JENKINS/Throttle+Concurrent+Builds+Plugin
将 A、B 和 C 放在一组中,并且只允许该组有一个构建作业
我认为最"official"的方法是使用lockable resources plugin.(implemented as part of https://issues.jenkins-ci.org/browse/JENKINS-30269)
您可以使用 lock
步骤(包含在 lockable-resources-plugin
中。
您的脚本将如下所示:
lock('my-resource') {
stage('A') {...}
stage('B') {...}
stage('C') {...}
}
stage('D')
stage('E')