如何在Gitlab CI shell runner上构建失败

Voj*_*h B 20 gitlab gitlab-ci gitlab-ci-runner

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

before_script:
  - "echo off"
  - 'call "%VS120COMNTOOLS%\vsvars32.bat"'
  - echo.
  - set
  - echo.

stages:
  - build

build:
  stage: build
  script:
  - 'StatusTest.exe'
  #- msbuild...
Run Code Online (Sandbox Code Playgroud)

我试图使用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..."
...
Run Code Online (Sandbox Code Playgroud)

Ala*_*ALI 36

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

1)何时失败

你需要在你的行中添加这一行 gitlab-ci.yml

- # ....
- exit 1
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

然后当你看到你的舞台(在我的情况下是第三个)时,结果将失败:

在此输入图像描述

2)什么时候应该成功

你需要在你的行中添加这一行 gitlab-ci.yml

- # ....
- exit 0
Run Code Online (Sandbox Code Playgroud)

阶段执行结果应该是:

在此输入图像描述

然后当你看到你的舞台(在我的情况下是第三个)时,结果将是Ok并准备好进入下一个阶段:

在此输入图像描述

  • 这是因为 after_script 中的错误不会导致作业失败;而是会导致作业失败。这就是 after_script 的要点之一。 (2认同)