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

Do manual build fail in Jenkins using shell script

提问人:Selvakumar Ponnusamy 提问时间:12/31/2013 最后编辑:Eric LeschinskiSelvakumar Ponnusamy 更新时间:1/19/2017 访问量:45851

问:

我想将 Jenkins 构建标记为在一种情况下失败,例如:

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

可以通过 Shell 脚本吗?

答:如果我们以整数 1 退出,Jenkins 构建将被标记为失败。所以我用来解决这个问题,我替换了评论。exit 1

Jenkins 连续集成

评论

2赞 alk3ovation 12/31/2013
在我看到更新之前,我在下面发布了我的答案。很高兴你弄清楚了!

答:

87赞 alk3ovation 12/31/2013 #1

您需要做的就是退出 1。

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

评论

3赞 TyMayn 10/31/2014
您能否添加一个指向文档的链接来解释这一点?顺便说一句,感谢您的回答。
0赞 albertoiNET 3/14/2017
并且可以将 exit 设置为另一个数字,以便将 jenkins 标记为另一种状态类型,即不可设置?
1赞 Jonathan Benn 10/6/2020
@albertoiNET据我所知,任何非零退出代码都会被 shell 解释为错误。但是,该信息会保留,因此您可以测试返回了哪个特定的错误代码。这首先是错误代码的点。
3赞 Ben 10/21/2014 #2

若要使从 .NET 构建的 Jenkins 失败,可以使用 .Environment.Exit(1)

另请参阅如何在 .NET 中指定控制台应用程序的退出代码?

2赞 AnneTheAgile 1/26/2016 #3

若要使 Windows PowerShell 中的 Jenkins 生成失败,可以使用 Steve 的 C# 提示,如下所示:

$theReturnCode = 1
[System.Environment]::Exit( $theReturnCode )

笔记;

1.Windows 回收高于 65535 的退出代码。( https://stackoverflow.com/a/31881959/242110 )

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

3.Jenkins 还可以将构建标记为“不稳定”,这篇文章(https://stackoverflow.com/a/8822743/242110)详细介绍了该解决方案。