我在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..."
...
答案 0 :(得分:24)
什么决定了CI shell runner应该使构建失败而不是 继续下一步?
您需要在gitlab-ci.yml
- # ....
- exit 1
舞台执行结果应该失败,不会进入下一步:
然后当你看到你的舞台(在我的情况下是第三个)时,结果将会失败:
您需要在gitlab-ci.yml
- # ....
- exit 0
舞台执行结果应为:
然后当你看到你的舞台(在我的情况下是第三个)时,结果将是Ok并准备好进入下一阶段:
答案 1 :(得分:2)
您的StatusTest.exe
必须返回信号1,0,-1作为状态代码。它必须在您的应用程序中实现。
否则,如果您的申请失败,跑步者将不会通知。
几乎每种编程语言都有返回状态代码的方法。
爪哇
System.exit(exitCode) # exitCode = 1 or 0 or -1
[...]等等。
也许尝试不抛出异常,只返回状态代码。