我有一个jenkins管道脚本,可以在多个节点上并行运行各种测试套件。我不是詹金斯专家-大部分是从我们拥有的其他工作中复制粘贴。
有时我会遇到失败,因为archiveArtefacts命令以某种方式获得了错误的'tar_file'变量。
通常,套件名称内置在日志的tar文件中,然后将该tar文件存档到Jenkins,但是对于某些运行,该tar文件使用一个套件名称创建,然后存档步骤使用另一个名称(我已经看到其中并行步骤中的2或3个失败并出现这种错误的运行,而有些情况中只有1个失败。
以某种方式,在sh("tar -czf ${tar_file} ${host_logs}/*")
和archiveArtifacts artifacts: tar_file
之间,tar_file
的值已更改为另一个套件的值。
关于如何更改此设置以使tar_file在每个步骤中保持不变的任何想法吗?
try {
stage('cuke_regression') {
def stepsForCuke = [:]
stepsForCuke['cuke_api'] = sectionCukeRegressionTests("api")
stepsForCuke['cuke_admin'] = sectionCukeRegressionTests("admin")
stepsForCuke['cuke_notification'] = sectionCukeRegressionTests("notification")
stepsForCuke['cuke_public'] = sectionCukeRegressionTests("public")
stepsForCuke['cuke_project'] = sectionCukeRegressionTests("project")
stepsForCuke['cuke_group'] = sectionCukeRegressionTests("group")
stepsForCuke['cuke_review'] = sectionCukeRegressionTests("review")
stepsForCuke['cuke_workflow'] = sectionCukeRegressionTests("workflow")
stepsForCuke['cuke_review_comment'] = sectionCukeRegressionTests("review_comment")
parallel stepsForCuke
}
}
def sectionCukeRegressionTests(suite) {
section = 'cukes'
return {
section: {
node('docker-node') {
tar_file = "cukes-"+suite+"-logs.tgz "
try {
sh("docker-compose exec ... run the tests \"")
sh("tar -czf ${tar_file} ${host_logs}/*")
} finally {
sh("docker-compose down")
archiveArtifacts artifacts: tar_file
}
}
}
}
}
答案 0 :(得分:0)
Dibakar关于将tar_file变量设为“ def”变量的建议已经解决了我的问题。