在 Jenkins 流水线中,报告导致构建不稳定的 shell 脚本错误的推荐方法是什么(即,执行测试的脚本,但如果进一步失败则不应停止剩余的测试)
理想情况下,如果“测试”脚本失败,我们不会取消构建,而是在最后报告错误。这可以通过使用 catch 块包装“sh”步骤并将构建标记为不稳定来实现。但是,如果我们使用单个管道,所有这些错误日志都将混合在一个控制台日志中(我知道您也可以从管道视图中向下钻取,但需要查找)。
有推荐的方法来报告这些错误吗?想法包括:
- 将错误保存在数组中并在最后打印
- 捕获输出并写入junit文件
- 某种具有记录错误步骤的插件?如果有任何报告,这会将构建标记为不稳定?
例如
def errors = []
try {
sh "check-doc-style.sh | tee check-doc-style.log"
} catch (e)
errors << "Doc style check failed : ${e}"
}
step([$class: 'ArtifactArchiver', artifacts: 'check-doc-style.log'])
try {
sh "sanity-checks.sh | tee sanity-checks.log"
} catch (e)
errors << "Sanity checks failed : ${e}"
}
step([$class: 'ArtifactArchiver', artifacts: 'sanity-checks.log'])
if (errors.size() > 0) {
currentBuild.result = 'UNSTABLE'
for (int i = 0; i < errors.size(); i++) {
echo errors[i];
}
}
对于上下文:我们正在从每个分支有十几个作业的 Jenkins 设置迁移到单个 Jenkins 管道 Jenkinsfile 来代表整个事情。许多作业都是通过(退出代码 0)或失败的脚本测试。通过查看控制台日志查看错误消息。