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".