Jenkins工作区不是为在管道脚本中创建的并行阶段创建的

9ceoxa92  于 12个月前  发布在  Jenkins
关注(0)|答案(1)|浏览(129)

Jenkins自定义工作区不会为在管道脚本中创建的并行阶段创建
仅创建主自定义工作区“main_ws”。
为什么没有为并行脚本生成的阶段创建自定义工作区?如何解决这个问题?

def getTests(Name, Versions) {
    return Versions.collectEntries { version ->
        [
                (version): {
                    stage("${Name}:${version} Tests") {
                        agent {
                            node {
                                label "docker"
                                customWorkspace "${Name}${version}"
                            }
                        }
                        script {
                            bat "echo Testing the ${Name}:${version}"
                        }
                    }
                }
        ]
    }
}

pipeline {
  agent {
    label "docker"
  }

  tools {
    gradle "gradle"
  }

  parameters {
    text(name: 'VERSIONS', defaultValue: '1.0\n2.0\n3.0\n', description: '')
    booleanParam(name: 'NAME', defaultValue: false, description: '')
  }
  stages {
    stage('Tests') {
      parallel {
        stage('Tests') {
          when {
            expression {
              return params.NAME
            }
          }
          agent {
            node {
              label "docker"
              customWorkspace "main_ws"
            }
          }
          steps {
            script {
              def versions = params.VERSIONS.split("\n")
              parallel getTests("NAME", versions)
            }
          }
        }
      }
    }
  }
}

字符串

qnyhuwrf

qnyhuwrf1#

声明式语法 inside 脚本化语法的工作方式与外部不同。在script外部,步骤pipelinestage是关键字,并接受agent关键字。在script内部,步骤pipelinestagesteps 不知道什么agent关键字了。对应的脚本语法是nodews,见这里。

相关问题