如何使 Gitlab CI shell runner 上的构建失败

How to fail a build on Gitlab CI shell runner

我在 windows 10:

上有一个 Gitlab CI runner 运行
before_script:
  - "echo off"
  - 'call "%VS120COMNTOOLS%\vsvars32.bat"'
  - echo.
  - set
  - echo.

stages:
  - build

build:
  stage: build
  script:
  - 'StatusTest.exe'
  #- msbuild...

我试图通过 StatusText.exe 使构建失败(我尝试返回状态代码 -1,0,1;抛出异常等)但 Runner 仅记录异常并继续执行以下步骤。

是什么决定了 CI shell runner 应该构建失败而不继续下一步?

输出:

...
windows_tracing_logfile=C:\BVTBin\Tests\installpackage\csilogfile.log
$ echo.

$ StatusTest.exe

Unhandled Exception: System.Exception: tralala
   at StatusTest.Program.Main(String[] args)
$ echo "Restoring NuGet Packages..."
...

您的 StatusTest.exe 必须 return 信号 1,0,-1 作为状态代码。它必须在您的应用程序中实现。 否则,如果您的申请失败,跑步者将不会通知。 几乎每种编程语言都有 return 状态代码的方法。

C#

Java

System.exit(exitCode) # exitCode = 1 or 0 or -1

[...] 等等。

也许尽量不抛出异常,只是 return 一个状态码。

What determines that CI shell runner should fail the build and not proceed to next step?

1) 什么时候应该失败

您需要在 gitlab-ci.yml

中添加这一行
- # ....
- exit 1

阶段执行结果应该会失败,不会进入下一步:

然后当您查看您的阶段(在我的情况下是第 3 个阶段)时,结果将失败:

2) 什么时候应该成功

您需要在 gitlab-ci.yml

中添加这一行
- # ....
- exit 0

阶段执行结果应该是:

然后当您查看您的阶段(在我的情况下是第 3 个阶段)时,结果会正常并准备好进入下一阶段: