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..."
...
CI Shellランナーがビルドに失敗し、次のステップに進まないことを決定するものは何ですか?
gitlab-ci.yml
にこの行を追加する必要があります
- # ....
- exit 1
ステージ実行結果は失敗するはずで、次のステップには進みません。
そして、あなたのステージ(私の場合は3番目のステージ)を見ると、結果は失敗します:
gitlab-ci.yml
にこの行を追加する必要があります
- # ....
- exit 0
ステージの実行結果は次のようになります。
そして、ステージ(私の場合は3番目のステージ)を見ると、結果はOkになり、次のステージに進む準備ができています。
_StatusTest.exe
_は、ステータスコードとしてシグナル1,0、-1を返す必要があります。アプリケーションに実装する必要があります。そうしないと、アプリケーションが失敗してもランナーは通知しません。ほとんどすべてのプログラミング言語には、ステータスコードを返す方法があります。
Java
System.exit(exitCode) # exitCode = 1 or 0 or -1
[...] 等々。
例外をスローせずに、ステータスコードを返すようにしてください。