27 votes

Runner de build de ligne de commande TeamCity: Comment faire échouer la build?

Nous sommes à l'aide de TeamCity la ligne de commande de construire coureur d'appeler une chauve-souris-fichier. La chauve-souris-fichier construit notre solution en appelant le Visual Studio 2008 "devenv.exe" et puis il exécute les tests unitaires et crée la structure de dossier correct.

Ce que nous aimerions faire est d'arrêter l'exécution de la chauve-souris de fichier si l'appel à devenv d'échec et de rendre le TeamCity à réaliser que la compilation a échoué. Nous pouvons attraper l'échec de l'devenv appel par la vérification de l' ErrorLevel (qui est à 1 si la compilation a échoué) et nous pouvons sortir de notre chauve-souris-fichier. Mais comment pouvons-nous dire à la TeamCity que la compilation a échoué?

C'est ce que nous avons essayé:

call "build.bat"
IF ERRORLEVEL 1 EXIT /B 1

Mais TeamCity ne reconnaît pas notre code de sortie. Au lieu de cela, le journal de génération ressemble à ceci:

[08:52:12]: ========== Build: 28 succeeded or up-to-date, 1 failed, 0 skipped ==========
[08:52:13]: C:\_work\BuildAgent\work\bcd14331c8d63b39\Build>IF ERRORLEVEL 1 EXIT /B 1 
[08:52:13]: Process exited with code 0
[08:52:13]: Publishing artifacts
[08:52:13]: [Publishing artifacts] Paths to publish: [build/install, teamcity-info.xml]
[08:52:13]: [Publishing artifacts] Artifacts path build/install not found
[08:52:13]: [Publishing artifacts] Publishing files
[08:52:13]: Build finished

Donc, TeamCity signalera que le build a été couronnée de succès. Comment pouvons-nous résoudre ce problème?

Solution:

TeamCity fournit un mécanisme appelé les Messages de Service qui peut être utilisé pour gérer ce genre de situation. J'ai mis à jour mon script de génération de ressembler à ce qui suit:

IF %ERRORLEVEL% == 0 GOTO OK
echo ##teamcity[buildStatus status='FAILURE' text='{build.status.text} in compilation']
EXIT /B 1
:OK

Comme un résultat de TeamCity fera rapport mon build comme a échoué en raison d'un "Échec lors de la compilation".

21voto

Sergey Mirvoda Points 2445

Voir le Script de construction de l'Interaction avec TeamCity sujet.

Vous pouvez signaler des messages pour construire journal de la manière suivante:

##teamcity[message text='<message text>' errorDetails='<error details>' status='<status value>']

où:

  • Le statut de l'attribut peut prendre les valeurs suivantes: NORMAL, AVERTISSEMENT, L'ÉCHEC, DE L'ERREUR. La valeur par défaut est NORMAL.
  • Le errorDetails l'attribut est utilisé seulement si l'état est une ERREUR, dans d'autres cas, il est ignoré.

Ce message d'échec de la construction dans le cas où son état est ERREUR et "Fail compilation si un message d'erreur est consigné par construire runner" case à cocher est vérifié sur la configuration des paramètres de la page général. Par exemple:

##teamcity[message text='Exception text' errorDetails='stack trace' status='ERROR']

Mise à jour 2013-08-30:

Comme de TeamCity 7.1 échecs de compilation doit être signalé à l'aide de l' buildProblem message de service à la place:

##teamcity[buildProblem description='<description>' identity='<identity>']

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X