web-dev-qa-db-fra.com

Comment échouer une build sur le runner Gitlab CI Shell

J'ai un coureur Gitlab CI fonctionnant sur Windows 10:

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

stages:
  - build

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

J'essaie d'échouer la génération avec StatusText.exe (j'ai essayé de renvoyer les codes d'état -1,0,1; levée d'une exception, etc.) Mais Runner enregistre uniquement l'exception et continue avec les étapes suivantes.

Qu'est-ce qui détermine que le runner CI Shell doit échouer à la génération et ne pas passer à l'étape suivante?

Production:

...
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..."
...
16
Vojtech B

Qu'est-ce qui détermine que le runner CI Shell doit échouer à la génération et ne pas passer à l'étape suivante?

1) Quand cela devrait échouer

Vous devez ajouter cette ligne dans votre gitlab-ci.yml

- # ....
- exit 1

Le résultat de l'exécution de l'étape doit échouer et ne passe pas à l'étape suivante:

enter image description here

puis quand vous regardez votre stage (dans mon cas le 3ème) le résultat sera raté:

enter image description here

2) Quand cela devrait réussir

Vous devez ajouter cette ligne dans votre gitlab-ci.yml

- # ....
- exit 0

Le résultat de l'exécution de l'étape doit être:

enter image description here

puis quand vous regardez votre étape (dans mon cas la 3ème) le résultat sera Ok et prêt à passer à l'étape suivante:

enter image description here

31
Ala Eddine JEBALI

Votre StatusTest.exe Doit renvoyer un signal 1,0, -1 comme code d'état. Il doit être implémenté dans votre application. Sinon, le coureur ne vous avertira pas si votre application échoue. Presque tous les langages de programmation ont des moyens de retourner des codes d'état.

C #

Java

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

[...] etc.

Essayez peut-être de ne pas lever d'exception, renvoyez simplement un code d'état.

2
Rubinum