我在Jenkins管道中运行一系列阶段。 每个阶段代表一个测试。 即使一个阶段(测试)失败,我也想继续以下阶段(测试),但我不知道如何。
我知道的唯一解决方案是使用try / catch子句封装舞台步骤,但是这样我就不会轻易知道测试是否失败或成功。
它们不能并行运行,必须按顺序运行。
有更好的解决方案吗?
答案 0 :(得分:1)
这不是最佳选择,因为Jenkins不知道哪些阶段失败了,但我们手动收集这些数据:
def success = 0
def failed = []
for (int i = 0; i < tests.size(); i++) {
def test = tests[i]
stage(test) {
try {
sh "...."
success++
} catch (e) {
failed << test
}
}
}
stage('Report') {
def failCount = tests.size()-success
if (failCount == 0)
echo "Executed ${success} tests successfully."
else
error """Executed ${success} tests successfully and ${failCount} failed:
${failed.join(', ')}"""
}