首页 > 解决方案 > 从外部脚本或作业中断或批准多个管道的睡眠时间

问题描述

我正在使用 Jenkisfile 为 50 个微服务运行 50 个管道,并使用 cron 每两周触发一次所有作业。我在管道中添加了延迟,因此任何用户都可以在检查测试结果后批准作业,并将其用于 Prod 部署。

stage('PROD Deployment Approval') {
            // no agent, so executors are not used up when waiting for approvals
            agent none
        steps {
            script {
               def deploymentDelay = input id: 'Approve', message: 'Deploy to PROD?', submitter: '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'
            }
        }

但不是参加每项工作并提供批准。外部脚本或作业有什么办法可以批准所有运行的作业吗?

标签: jenkinsjenkins-pipelinejenkins-pluginsjenkins-groovyjenkins-cli

解决方案


我不相信詹金斯有这样的事情。您可以让他们等待 S3 中的文件更新或参数翻转或其他东西,但这将使用执行程序。

我建议最好的办法是在这个阶段结束这些管道,并有另一个工作来触发所有产品部署管道,一旦测试通过,这些管道就会手动启动。

使用 GitOps 以便开发环境的工作在此处结束,然后当 QA 团队满意时,您将开发存储库合并到产品存储库,并且产品部署管道将自动启动。

或者只是使自动化测试足够好以部署到生产中


推荐阅读