jenkins stageview插件的一个bug,找到原因并解决
正常情况
stage("更新") {
echo "1"
echo "2"
input "Are you sure" // 正常
}
异常情况
stage("更新") {
parallel(
"one": { echo "1" },
"two": { echo "2" }
)
input "Are you sure" // 不显示
}
在stageview中不显示确认按钮,导致无法进入下一步。
寻找原因
在日志中可以发现,其实jenkins已经执行了input,只是在stageview上无法显示。
通过比对正常情况与异常情况的api数据,发现了问题所在!
在stageview插件中input对话框的显示是通过当前节点的STATUS == “PAUSED_PENDING_INPUT”来判断的,当Stage中设置了并行parallel后,该阶段的STATUS变成了IN_PROGRESS,从而导致input对话框不显示,流程无法进行下去。
解决方案
1)集成jenkins,直接修改前端状态的判断即可
$scope.checkInputStatus = (build, stage) ->
if stage.status == "PAUSED_PENDING_INPUT"
return true
else if build.status == "PAUSED_PENDING_INPUT" && stage.status == "IN_PROGRESS"
return true
else
return false
2)使用jenkins,通过issue向stageview开发者反映,期待插件更新。 https://issues.jenkins-ci.org/browse/JENKINS-41164