如何在Gitlab CI shell runner

时间:2016-04-14 09:38:49

标签: 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...

我试图使用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..."
...

2 个答案:

答案 0 :(得分:24)

  

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

1)何时失败

您需要在gitlab-ci.yml

中添加此行
- # ....
- exit 1

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

enter image description here

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

enter image description here

2)何时成功

您需要在gitlab-ci.yml

中添加此行
- # ....
- exit 0

舞台执行结果应为:

enter image description here

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

enter image description here

答案 1 :(得分:2)

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

C#

爪哇

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

[...]等等。

也许尝试不抛出异常,只返回状态代码。