If statement Gitlab CI:条件允许\u失败

If statement Gitlab CI:条件允许\u失败,if-statement,gitlab-ci,compiler-warnings,If Statement,Gitlab Ci,Compiler Warnings,我最近开始为我的代码实现自动测试,我注意到CI没有捕获编译器的警告-即使出现警告,测试也会显示为成功。 我最初为编译器添加了一个标志,用于将警告转换为错误和allow_failure=True,但问题是编译器会在第一个警告->错误中停止,并且不会完成整个编译。 然后,我使用上面介绍的技巧将警告写入一个文件,然后测试该文件是否为零: - make 2> >(tee make.warnings) - test ! -s make.warnings 完成整个编译后,如果文

我最近开始为我的代码实现自动测试,我注意到CI没有捕获编译器的警告-即使出现警告,测试也会显示为成功。 我最初为编译器添加了一个标志,用于将警告转换为错误和
allow_failure=True
,但问题是编译器会在第一个警告->错误中停止,并且不会完成整个编译。 然后,我使用上面介绍的技巧将警告写入一个文件,然后测试该文件是否为零:

    - make 2> >(tee make.warnings)
    - test ! -s make.warnings
完成整个编译后,如果文件中写入了警告,则会出现错误-使用
allow\u failure=True
,这适用于没有错误/警告的情况,但也适用于有警告的情况。但是,如果我有实际错误,这也将在CI中显示为警告,并且不会因为
allow\u failure=True
而停止管道


根据脚本中运行的内容(不创建新阶段)或使用某些条件(例如,文件是否为空),我找不到方法
allow_failure=True
。有没有一种我不知道的简单方法呢?

既然没有条件,那么请查看(2021年1月):

使用退出代码控制作业状态 您可以使用
allow\u failure
关键字来防止失败的作业导致整个管道失败

以前,
allow_failure
只接受
true
false
的布尔值,但我们在此版本中进行了改进

现在您可以使用
allow_failure
关键字查找特定的脚本退出代码

这使您能够更灵活地控制管道,防止基于退出代码的故障

见和


如果您可以使用脚本的退出状态作为条件,那就足够让
allow\u failure
更具体了。

Yes!非常感谢您向我指出这项新改进的
allow_failure
-比上一项好多了!:)