def parallelIntegrationTests(stages) {
def tests = stages.collectEntries{ stagename, config ->
config = [solr: true, failonerror: true]
[(stagename): {
stage(stagename) {
node('integration && php7.1') {
ws('/var/lib/jenkins/shared-workspace/in-integration') {
try {
if (config.solr) {
sh "/usr/bin/ant -buildfile in/build.xml -Dphpunit.integration.group=${stagename} -Dphpunit.integration.failonerror=${config.failonerror} integration"
} else {
sh "/usr/bin/ant -buildfile in/build.xml integration-functional"
}
} catch (e) {
throw e
}
}
}
}
}]
}
parallel tests}
parallelIntegrationTests(
[
'integration-functional': {solr: false},
'security-authentication': {},
'api-infra': {},
'external-dependencies': {failonerror: false},
'registration': {}
]
)我正在尝试根据函数中的参数send来处理if else条件。但是,当jenkinsfile运行并调用parallelIntegrationTests时,本地设置的配置参数"config = solr: true,failonerror: true“将覆盖来自调用函数的参数send。我该怎么处理呢?
发布于 2020-10-27 00:39:11
正确的函数是:
def parallelIntegrationTests(stages) {
def tests = stages.collectEntries{ stagename, config ->
config = [solr: true, failonerror: true] + config
[(stagename): {
stage(stagename) {
node('integration && php7.1') {
ws('/var/lib/jenkins/shared-workspace/in-integration') {
try {
if (config.solr) {
sh "/usr/bin/ant -buildfile in/build.xml -Dphpunit.integration.group=${stagename} -Dphpunit.integration.failonerror=${config.failonerror} integration"
} else {
sh "/usr/bin/ant -buildfile in/build.xml integration-functional"
}
} catch (e) {
throw e
}
}
}
}
}]}个并行测试
https://stackoverflow.com/questions/64501241
复制相似问题