有没有办法在 Jenkins 2 管道中插入手动批准?

gio*_*oni 24 jenkins

Jenkins 2 拥有管道,拥有一等公民。但是,在示例中,任务似乎是作为单个序列执行的:

node {
   // Mark the code checkout 'stage'....
   stage 'Checkout'

   // Get some code from a GitHub repository
   git url: 'git@github.com:elifesciences/elife-bot.git'

   // Mark the code build 'stage'....
   stage 'Build'
   echo "Unit tests will run here"

   stage "Production"
   echo "Deploying to production environment"
}
Run Code Online (Sandbox Code Playgroud)

对于部署到生产系统中,需要手动批准通常很有用;有没有办法插入手动按钮以在管道内按下?

我一直在寻找在文档上完成此操作可能步骤,但无济于事。

小智 22

input是您正在寻找的选项。这是我使用它的方式。将步骤放在节点之外很重要,否则 jenkins 将持有一个等待下一步的代理。请记住,第二个节点可能不会使用与第一个节点相同的工作空间。

node {
    stage('build'){
        echo "building"
    }
}
stage('Deploy approval'){
    input "Deploy to prod?"
}
node {
    stage('deploy to prod'){
        echo "deploying"
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我不明白输入可以配置为*不*阻止代理。这使得输入方式更有用。 (2认同)

gio*_*oni 1

最后,我创建了单独的test-project管道prod-project,其中代码最后test-project合并为approved分支中。

然后,prod-project可以将管道设置为不触发每个新提交,以便可以按需部署。

  • 这是我自己的问题,所以我分享了解决该问题的解决方法。 (2认同)