仅在管道中的某个步骤后才允许启动相同的 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')