jenkins 当部分矩阵/并行完成时,继续下一阶段

rryofs0p  于 2023-03-07  发布在  Jenkins
关注(0)|答案(1)|浏览(179)

我正在处理Jenkins Pipeline脚本,它需要在3台服务器上并行运行工作,但需要在4台不同的服务器上继续工作,至少其中一台服务器完成了它们正在执行的工作。我不确定Jenkins是否可以做到这一点,但如果可以,它将对我目前正在处理的工作有很大帮助。
我已经试着在Google上搜索了这篇文章,并在Jenkins中查找了矩阵和并行阶段的文档,但我要么是在寻找错误的术语,要么是没有这样做的信息或能力。

hxzsmxv2

hxzsmxv21#

你应该可以用不同的方法来实现它,比如Lockable Resource Plugin,它的思想是从每个初始阶段开始调用外部阶段执行,第一个调用的阶段将获得一个锁,防止其他阶段执行。

pipeline {
    agent any
    stages {
        stage('Run Tests') {
            parallel {
                stage('1') {
                    steps {
                        echo "Running something here"
                        runOtherStepsOrStages()
                        
                    }
                }
                stage('2') {
                    steps {
                        echo "run-tests.sh"
                        runOtherStepsOrStages()
                    }
                }
                 stage('3') {
                    steps {
                        echo "run-tests.sh"
                        runOtherStepsOrStages()
                    }
                }
            }
        }
    }
}

def runOtherStepsOrStages(){
    // Only one Stage will be able to aquare the lock, once aquiredother will skip, you can add another flag to make sure it's not executed again after the stage is completed
    lock(resource: 'myLock', skipIfLocked: true) {
        echo "Storing the steps/stages externally to reuse."
        sleep 30
    }
}

相关问题