44

我有一个在 Windows 10 上运行的 Gitlab CI 运行器:

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 运行器应该使构建失败而不继续下一步?

输出:

...
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..."
...
4

2 回答 2

68

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

1)什么时候应该失败

您需要在您的gitlab-ci.yml

- # ....
- exit 1

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

在此处输入图像描述

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

在此处输入图像描述

2)什么时候应该成功

您需要在您的gitlab-ci.yml

- # ....
- exit 0

阶段执行结果应该是:

在此处输入图像描述

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

在此处输入图像描述

于 2017-02-06T10:55:13.653 回答
2

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

C#

爪哇

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

[...] 等等。

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

于 2016-05-04T12:19:34.623 回答