最近发布了的一些变更给了流水线编辑者新的工具以改善在 Blue Ocean 中的流水线可视化,有一个备受瞩目关注的工单 JENKINS-39203,这会导致当流水线的构建结果为不稳定时所有的阶段都被设置为不稳定的。这个缺陷导致无法快速地识别为什么构建是不稳定的,使得用户必须查看完整的日志和 Jenkinsfile 才能弄明白究竟发生了什么。
为了修复这个问题,我们引入了一个新的流水线 API 用于为单个流水线步骤添加额外的结果信息。像 Blue Ocean 这样的可视化工具在决定阶段如何显示时会使用到这新的 API。像 junit 这样的步骤只能设置整个构建结果,现在可以通过新的 API 设置步骤级别的结果信息。我们创建了新的步骤 unstable 和 warnError,这样流水线编辑者在更复杂的场景下仍然可以利用这个新的 API。
该问题涉及到的重要的修复包含在如下的插件中,它们都需要 Jenkins 2.138.4 以及更新的版本:
Pipeline: API 2.34
Pipeline: Basic Steps 2.18 (需要同步更新到 Pipeline: Groovy 2.70)
Pipeline: Graph Analysis 1.10
Pipeline: Declarative 1.3.9
Blue Ocean 1.17.0
这里是一条使用了 unstable 步骤的流水线在 Blue Ocean 中的截图,只会把失败的阶段标识为不稳定的:
例子
这里给出一些如何在你的流水线中使用该特性的示例:
使用新的步骤 warnError 用于捕获错误,并把构建和阶段标记为不稳定的。 warnError 只需要一个 字符串 的参数,用于当捕获到错误时以日志的形式输出。当 warnError 捕获到一个错误时,它会记录该消息以及错误,并设置构建和阶段的结果为不稳定的。效果如下:
warnError('Script failed!') {
sh('false')
}
使用新的步骤 unstable 设置构建和阶段结果为不稳定的。可以使用该步骤直接替换 currentBuild.result = 'UNSTABLE',在 warnError 不够灵活时这会比较有用。步骤...