Gitlab-CI:有条件的allow_failure

问题描述 投票:0回答:1

我最近开始为我的代码实现自动测试,我注意到 CI 没有捕获编译器的警告 - 即使有警告,测试也显示为成功。 我最初为编译器添加了一个标志,将警告转变为错误和

allow_failure=True
,但问题是编译器在第一个警告->错误时停止,并且不会完成整个编译。 然后,我使用here解释的技巧将警告写入文件,然后测试该文件是否不为零:

    - make 2> >(tee make.warnings)
    - test ! -s make.warnings

整个编译完成后,如果有警告写入文件,这将给出错误 - 并且使用

allow_failure=True
,这适用于我没有错误/警告的情况,但也适用于我有警告的情况。但是,如果我有真正的错误,这也会在 CI 中显示为警告,并且不会因为
allow_failure=True
而停止管道。

我无法找到一种方法来

allow_failure=True
,具体取决于脚本中运行的内容(不创建新阶段)或使用某些条件(即文件是否为空)。有没有一种我缺少的简单方法可以做到这一点?

if-statement gitlab-ci compiler-warnings
1个回答
18
投票

由于本身没有条件,请查看 GitLab 13.8(2021 年 1 月):

使用退出代码控制作业状态

您可以使用

allow_failure
关键字来防止失败的作业导致整个管道失败。

以前,

allow_failure
仅接受布尔值
true
false
,但我们在此版本中进行了改进。

现在您可以使用

allow_failure
关键字来查找特定的脚本退出代码

这为您提供了更大的灵活性和对管道的控制,防止基于退出代码的故障。

请参阅文档问题

如果您可以使用脚本的退出状态作为条件,那么

allow_failure
就足够具体了。

© www.soinside.com 2019 - 2024. All rights reserved.