如何使 Gitlab CI shell runner 上的构建失败
How to fail a build on Gitlab CI shell runner
我在 windows 10:
上有一个 Gitlab CI runner 运行
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 runner 应该构建失败而不继续下一步?
输出:
...
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..."
...
您的 StatusTest.exe
必须 return 信号 1,0,-1 作为状态代码。它必须在您的应用程序中实现。
否则,如果您的申请失败,跑步者将不会通知。
几乎每种编程语言都有 return 状态代码的方法。
C#
Java
System.exit(exitCode) # exitCode = 1 or 0 or -1
[...] 等等。
也许尽量不抛出异常,只是 return 一个状态码。
What determines that CI shell runner should fail the build and not
proceed to next step?
1) 什么时候应该失败
您需要在 gitlab-ci.yml
中添加这一行
- # ....
- exit 1
阶段执行结果应该会失败,不会进入下一步:
然后当您查看您的阶段(在我的情况下是第 3 个阶段)时,结果将失败:
2) 什么时候应该成功
您需要在 gitlab-ci.yml
中添加这一行
- # ....
- exit 0
阶段执行结果应该是:
然后当您查看您的阶段(在我的情况下是第 3 个阶段)时,结果会正常并准备好进入下一阶段:
我在 windows 10:
上有一个 Gitlab CI runner 运行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 runner 应该构建失败而不继续下一步?
输出:
...
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..."
...
您的 StatusTest.exe
必须 return 信号 1,0,-1 作为状态代码。它必须在您的应用程序中实现。
否则,如果您的申请失败,跑步者将不会通知。
几乎每种编程语言都有 return 状态代码的方法。
C#
Java
System.exit(exitCode) # exitCode = 1 or 0 or -1
[...] 等等。
也许尽量不抛出异常,只是 return 一个状态码。
What determines that CI shell runner should fail the build and not proceed to next step?
1) 什么时候应该失败
您需要在 gitlab-ci.yml
- # ....
- exit 1
阶段执行结果应该会失败,不会进入下一步:
然后当您查看您的阶段(在我的情况下是第 3 个阶段)时,结果将失败:
2) 什么时候应该成功
您需要在 gitlab-ci.yml
- # ....
- exit 0
阶段执行结果应该是:
然后当您查看您的阶段(在我的情况下是第 3 个阶段)时,结果会正常并准备好进入下一阶段: