0

我在 Jenkins 声明性管道中有一个阶段,我想在手动触发时有条件地运行,并且只能在master分支上运行。

stage('Deploy to prod') {
  when {
    branch 'master'
  }
  input {
    message "Deploy to prod?"
    ok "Deploy"
  }
  agent any
  steps {
    ..
  }
}

我希望对于除 之外的分支完全跳过此阶段master,但在实践中发生的情况是它会为所有分支暂停。有没有办法得到我所追求的行为?

4

1 回答 1

1

根据声明性管道文档input

在应用任何选项后,进入阶段代理或评估其何时条件之前,阶段将暂停。

为了使管道按照您指定的方式工作,我将转换input为(非声明式)步骤,如下所示:

stage('Deploy to prod') {
  when {
    branch 'master'
  }
  agent any
  steps {
    input message: "Deploy to prod?", ok: "Deploy"
    ..
  }
}
于 2018-05-31T13:59:58.057 回答