一尘不染

Jenkins Pipeline:“输入”步骤阻止执行程序

jenkins

看完管道Jenkinsfile文档后,我对如何创建
_舞台- >生产_管道感到困惑。

一种方法是使用input类似

node() {
  stage 'Build to Stage'
  sh '# ...'

  input 'Deploy to Production'
  stage 'Build to Production'
  sh '# ...'
}

这似乎有点笨拙,因为这将一直阻塞执行程序,直到您要部署到生产环境为止。Jenkins是否有其他任何可以部署到生产环境的方法。


阅读 333

收藏
2020-07-25

共1个答案

一尘不染

编辑(2016年10月):请参阅下面的其他答案“使用里程碑并锁定”,其中包括最近引入的功能。

使用timeout步骤

作为第一个选择,您可以将您的sh步骤包装为一个timeout步骤。

node() {
  stage 'Build to Stage' {
    sh '# ...'
  }

  stage 'Promotion' {
    timeout(time: 1, unit: 'HOURS') {
      input 'Deploy to Production?'
    }
  }

  stage 'Deploy to Production' {
    sh '# ...'
  }
}

这将在超时后停止构建。

移动input步骤来次最轻量级执行人

另一种选择是不为该input步骤分配重量级执行程序。您可以通过使用块input外的步骤来执行此操作node,如下所示:

stage 'Build to Stage' {
  node {
      sh "echo building"
      stash 'complete-workspace'
  }
}

stage 'Promotion' {
  input 'Deploy to Production?'
}

stage 'Deploy to Production' {
  node {
    unstash 'complete-workspace'
    sh "echo deploying"
  }
}

就是 很可能是更优雅的方式,但仍然可以用组合timeout的步骤。

编辑:@amuniz指出,您必须存储/取消存储工作区的内容,因为可能分别为这两个node步骤分配了不同的节点工作区目录。

2020-07-25