在Jenkins中使用Shell脚本手动构建失败

58

我希望在一个场景下标记 Jenkins 构建失败,例如:

if [ -f "$file" ]
then
    echo "$file found."
else
    echo "$file not found."
    #Do Jenkins Build Fail
fi

是否可以使用Shell脚本实现?

答案:如果我们用整数1退出,Jenkins构建将被标记为失败。因此,我用exit 1替换了注释以解决这个问题。


2
我在看到更新之前就已经发布了我的答案。很高兴你解决了问题! - alk3ovation
3个回答

86

你所需要做的就是退出并返回1。

if [ -f "$file" ]
then
    echo "$file found."
else
    echo "$file not found."
    exit 1
fi

3
请问您能否提供一下相关文档的链接?感谢您提供的答案。 - TyMayn
还可以将Jenkins的退出设置为另一个数字,以标记为其他状态类型,例如不稳定吗? - albertoiNET
1
据我所记,任何非零的退出代码都会被 shell 解释为错误。但是,这些信息仍然被保留,因此您可以测试返回了哪个特定的错误代码。这实际上就是错误代码存在的意义所在。 - Jonathan Benn

3

2
要从Windows PowerShell失败Jenkins构建,您可以使用Steve的C#技巧,如下所示:
$theReturnCode = 1
[System.Environment]::Exit( $theReturnCode )

注意事项:

1. Windows会回收大于65535的退出代码。( https://dev59.com/PGMl5IYBdhLWcg3wbGh1#31881959 )

2. Jenkins REST API有一个'/stop'命令,但这将取消构建而不是实际失败它。( https://jenkinsapi.readthedocs.org/en/latest/build.html )

3. Jenkins也可以标记构建为“不稳定”,该文章(https://dev59.com/T2sz5IYBdhLWcg3wCDl2#8822743)详细介绍了该解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接