How to fail a build on Gitlab CI shell runner

我的梦境 提交于 2019-11-30 14:37:35

问题


I have a Gitlab CI runner running on windows 10:

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

stages:
  - build

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

I am trying to fail the build with StatusText.exe (I tried returning status codes -1,0,1; throwing an exception, etc.) But Runner only logs the exception and continues with following steps.

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

Output:

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

回答1:


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

1) When it should fail

You need to add this line in your gitlab-ci.yml

- # ....
- exit 1

The stage execution result should fail and does not go to the next step:

and then when you look at your stage (in my case the 3rd one) the result will be failed:

2) When it should succeed

You need to add this line in your gitlab-ci.yml

- # ....
- exit 0

The stage execution result should be:

and then when you look at your stage (in my case the 3rd one) the result will be Ok and ready to go to the next stage:




回答2:


Your StatusTest.exe has to return a signal 1,0,-1 as status code. It must be implemented in your application. Otherwise the runner will not notify if your application fails. Almost every programming language has ways to return status codes.

C#

Java

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

[...] and so on.

Maybe try to not throw an exception, just return a status code.



来源:https://stackoverflow.com/questions/36619212/how-to-fail-a-build-on-gitlab-ci-shell-runner

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!