在 Jenkins 声明性管道中,如何为动态创建的并行阶段设置代理标签

问题描述 投票:0回答:1

我有一个函数可以创建要并行运行的动态阶段,代码看起来与此类似...

def stagesMap = [:]
for (int i = 1; i < 3; i++) {
    def stageName = "Stage ${i}"
    stagesMap[testName] = {
        stage("${stageName}") {
            agent { label 'SomeAgent' }
            script {
                someFunctionCall()
            }
        }
    }
}
parallel stagesMap

当我运行此管道时,所有阶段都在主代理上运行,而不是在动态阶段中指定的代理上运行。

有没有办法在动态创建阶段时指定代理?

jenkins-pipeline
1个回答
0
投票

解决方案是使用节点,而不是阶段。

def stagesMap = [:]
for (int i = 1; i < 3; i++) {
    stagesMap[testName] = {
        node('nodeNameOrLabel') { //use node here instead of stage.
            script {
                someFunctionCall()
            }
        }
    }
}
parallel stagesMap
© www.soinside.com 2019 - 2024. All rights reserved.