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)
}
}
}
}
}
}
}
字符串
1条答案
按热度按时间qnyhuwrf1#
声明式语法 inside 脚本化语法的工作方式与外部不同。在
script
外部,步骤pipeline
和stage
是关键字,并接受agent
关键字。在script
内部,步骤pipeline
和stage
是 steps 不知道什么agent
关键字了。对应的脚本语法是node
和ws
,见这里。