需要插件来控制谁可以批准 Jenkins 管道中的阶段

Need plugin to control who can approve a stage in Jenkins Pipeline

我需要一个插件,团队负责人可以批准管道是否可以进入 Jenkins 的下一阶段。我计划使用多级管道(声明式),所以在开发阶段之后我需要一个人批准(只有他可以批准)并且开发人员可以 运行 完成这项工作。有没有这样的插件可以让只有一个人可以批准这样的请求?

尝试过基于角色的访问插件,但这里没有办法控制可以进行阶段批准的人员隔离

@sidharth vijayakumar,我想你可以使用 'Pipeline: Input Step' 插件。

据我了解,此插件会暂停管道执行并允许用户交互和控制构建流程。

可以通过构建控制台日志底部的 link 或构建侧边栏中的 link 访问参数输入屏幕。

留言 此参数给出将显示给人类的提示:

    Ready to go?
    Proceed or Abort

如果单击“继续”,构建将继续下一步,如果单击“中止”,构建将中止。

您的管道脚本应该类似于以下代码段

// Start Agent
node(your node) {
    stage('Checkout') {
        // scm checkout
    }
    stage('Build') {
        //build steps
    }
    stage('Tests') {
        //test steps
    }  
    // Input Step
    {
    input message: 'Do you want to approve if flow can proceeded to next stage?', ok: 'Yes'
    }  
    stage('Deploy') {
        ...
    }
}


参考 link : https://www.jenkins.io/doc/pipeline/steps/pipeline-input-step/

为了解决基于角色的批准问题,我将输入块与提交者一起使用。这意味着列为提交者的人将只能给予阶段批准。

    stage('Approval') {
        agent none
        steps {
            script {
                def deploymentDelay = input id: 'Deploy', message: 'Deploy to production?', submitter: 'rkivisto,admin', parameters: [choice(choices: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24'], description: 'Hours to delay deployment?', name: 'deploymentDelay')]
                sleep time: deploymentDelay.toInteger(), unit: 'HOURS'
            }
        }
    }

请注意,提交者必须是有效用户。使用基于角色的访问插件并创建具有相关访问权限的用户。

脚本参考 link: https://support.cloudbees.com/hc/en-us/articles/360029265412-How-can-I-approve-a-deployment-and-add-an-optional-delay-for-the-deployment