使用错误变量的Jenkins并行循环脚本
我正在尝试构建一组并行运行的动态步骤。下面的例子就是我想到的(并找到了at的例子)。但是我很难让它使用预期的变量。结果似乎总是来自循环最后一次迭代的变量 在以下示例中,两个测试的回波输出总是使用错误变量的Jenkins并行循环脚本,jenkins,groovy,Jenkins,Groovy,我正在尝试构建一组并行运行的动态步骤。下面的例子就是我想到的(并找到了at的例子)。但是我很难让它使用预期的变量。结果似乎总是来自循环最后一次迭代的变量 在以下示例中,两个测试的回波输出总是bdir2: pipeline { agent any stages { stage('Test') { steps { script { def tests = [:] def files files
bdir2
:
pipeline {
agent any
stages {
stage('Test') {
steps {
script {
def tests = [:]
def files
files = ['adir1/adir2/adir3','bdir1/bdir2/bdir3']
files.each { f ->
rolePath = new File(f).getParentFile()
roleName = rolePath.toString().split('/')[1]
tests[roleName] = {
echo roleName
}
}
parallel tests
}
}
}
}
}
我希望其中一个测试输出
adir2
,另一个测试输出bdir2
。我在这里遗漏了什么?只要试着将测试部分移得更高一点,就可以了
pipeline {
agent any
stages {
stage('Test') {
steps {
script {
def tests = [:]
def files
files = ['adir1/adir2/adir3','bdir1/bdir2/bdir3']
files.each { f ->
tests[f] = {
rolePath = new File(f).getParentFile()
roleName = rolePath.toString().split('/')[1]
echo roleName
}
}
parallel tests
}
}
}
}
}
只要试着把测试部分移得更高一点,就可以了
pipeline {
agent any
stages {
stage('Test') {
steps {
script {
def tests = [:]
def files
files = ['adir1/adir2/adir3','bdir1/bdir2/bdir3']
files.each { f ->
tests[f] = {
rolePath = new File(f).getParentFile()
roleName = rolePath.toString().split('/')[1]
echo roleName
}
}
parallel tests
}
}
}
}
}
这很有效。我想对
tests
数组键和测试本身使用roleName
,这意味着我需要在块的内部和外部指定它。不是很枯燥,但我现在可以看到评估是如何进行的。这是有效的。我想对tests
数组键和测试本身使用roleName
,这意味着我需要在块的内部和外部指定它。不是很枯燥,但我现在可以看到评估是如何进行的。