看完管道和Jenkinsfile文档后,我对如何创建 _舞台- >生产_管道感到困惑。
一种方法是使用input类似
input
node() { stage 'Build to Stage' sh '# ...' input 'Deploy to Production' stage 'Build to Production' sh '# ...' }
这似乎有点笨拙,因为这将一直阻塞执行程序,直到您要部署到生产环境为止。Jenkins是否有其他任何可以部署到生产环境的方法。
编辑(2016年10月):请参阅下面的其他答案“使用里程碑并锁定”,其中包括最近引入的功能。
timeout
作为第一个选择,您可以将您的sh步骤包装为一个timeout步骤。
sh
node() { stage 'Build to Stage' { sh '# ...' } stage 'Promotion' { timeout(time: 1, unit: 'HOURS') { input 'Deploy to Production?' } } stage 'Deploy to Production' { sh '# ...' } }
这将在超时后停止构建。
另一种选择是不为该input步骤分配重量级执行程序。您可以通过使用块input外的步骤来执行此操作node,如下所示:
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步骤分配了不同的节点工作区目录。