如何在jenkinsfile /脚本中知道当前版本是重播?

fre*_*man 5 jenkins-pipeline

就像在主题中一样-是否有任何方法可以验证当前版本是否是使用“重播”按钮的效果?

Mar*_*les 6

我使用中的rawBuild实例找到了以下解决方案currentBuild。由于我们无法找到原因的类别,因此我们只需要验证其字符串值即可。

def replayClassName = "org.jenkinsci.plugins.workflow.cps.replay.ReplayCause?"
def isReplay = currentBuild.rawBuild.getCauses().any{ cause -> cause.toString().contains(replayClassName) }
Run Code Online (Sandbox Code Playgroud)

此解决方案适用于Jenkins和Blue-Ocean。Jenkins声明性管道是关于如何获得此答案的参考:找出触发工作

更新资料

使用此步进条件就像一个魅力!

您可以定义一个共享库,例如 jenkins.groovy

def isBuildAReplay() {
  // /sf/ask/3608913731/#52302879
  def replyClassName = "org.jenkinsci.plugins.workflow.cps.replay.ReplayCause"
  currentBuild.rawBuild.getCauses().any{ cause -> cause.toString().contains(replyClassName) }
}
Run Code Online (Sandbox Code Playgroud)

您可以在Jenkins管道中重用它

stage('Conditional Stage') {
  when {
    expression { jenkins.isBuildAReplay() }
  }
  steps {
    ...
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)