首页 > 解决方案 > 在 post 步骤中并行执行

问题描述

我正在同一管道中构建 2 个不同的环境,我想同时对这两个环境进行清理。

据我了解, parallel 在 post step 中不起作用:post step parallel

有什么建议么?我的代码示例:

post {
    always {
        script{
            cleanup(env1)
            cleanup(env2)
        }
    }
}


def cleanup(env) {
    withEnv(env) {
        sh "./cleanup.py"
    }
}    

标签: jenkinsjenkins-pipeline

解决方案


parallel只要将关键字封装在script块中,关键字就可以在后置条件中工作,因为script块只是脚本化管道的后备,它允许您在任何地方运行并行执行。
以下应该可以正常工作:

 post {
    always{
        script {
            def environments = ['env1', 'env2', 'env3']
            parallel environments.collectEntries {
                ["Cleanup ${it}" : {
                    cleanup(it)
                }]
            }
        }
    }
}


def cleanup(env) {
    withEnv(env) {
        sh "./cleanup.py"
    }
}  

node如果帖子部分中的步骤需要在特定代理上运行,请不要忘记使用关键字分配代理。


推荐阅读