2009-09-24 8 views
3

J'ai un script de construction à partir d'un outil tiers. Il fait son travail correctement, mais jette une exception inutile à la fin que je dois ignorer.Comment puis-je inciter Hudson à continuer une build après l'échec d'une commande Windows?

Mais Hudson ne l'ignore pas. Il arrête ma construction quand ce script se termine avec un code d'erreur! = 0. Ce qu'il fait, même lorsque la dernière ligne est 'exit 0'.

Il n'y a pas d'option dans la configuration de construction Hudson pour spécifier comment traiter l'échec d'une étape de construction particulière.

Existe-t-il une option cachée pour dire à Hudson de se battre? Où est la référence générale pour config.xml de Hudson?

Répondre

2

Semble que l'on doit envelopper le script incriminé dans sa propre chauve-souris:

copy con wrapper.bat 
>myErrorMakingScript.bat 
>exit /b 0 

puis wrapper.bat de feu Hudson.

2

L'une des principales propriétés de Hudson est que tout peut être configuré via l'interface Web. Donc regarder le fichier config.xml n'est pas la bonne approche.

Dans Hudson, votre commande Windows peut être lancée via un fichier batch. Je suggère de faire en sorte que ce fichier de commandes renvoie un code d'erreur zéro, indépendamment de ce que fait votre outil tiers. La première ligne invoquerait votre outil, et la deuxième ligne serait « exit 0 »

+1

de la question: « Ce qu'il fait, même si la dernière ligne est « exit 0 » » Mais vous avez raison, il n'y a pas une option de dire hudson d'ignorer une erreur sur une étape de construction particulière . Et merci pour le conseil à propos de tout cela sur le web. Je ne perdrai plus de temps à chercher des fonctionnalités cachées. –

2

Utilisez le plugin de déclenchement Join qui fonctionne très bien pour moi. cochez l'option "Déclencher même si certains projets en aval sont instables"

3

Sur les systèmes Unix, une solution consiste à l'exécuter dans un sous-shell de bash, avec une "exit 0" comme dernière commande. Par exemple:

bash -c "false; exit 0"

Cela exécutera "false" mais aura une valeur de retour de 0.

Ceci est un peu hacky mais fonctionne. Je ne sais pas si une solution similaire existe pour Windows.