166 votes

ne pas faire échouer la construction de jenkins si l'exécution du shell échoue

Dans le cadre de mon processus de construction, j'exécute un commit git comme une étape d'exécution du shell. Cependant, s'il n'y a pas de changements dans l'espace de travail, Jenkins échoue la construction. Ceci est dû au fait que git renvoie un code d'erreur lorsqu'il n'y a pas de changement à livrer. J'aimerais soit interrompre la construction, soit simplement le marquer comme instable si c'est le cas. Avez-vous des idées ?

10voto

Ben Points 3324

J'ai réussi à le faire fonctionner en utilisant la réponse trouvée ici :

Comment faire un git commit sans erreur ?

git diff --quiet --exit-code --cached || git commit -m 'bla'

9voto

jaxxed Points 122

https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#sh-shell-script

si vous incluez une propriété returnStatus : true, le retour du shell est ignoré.

8voto

jwernerny Points 3342

Jenkins détermine le succès/échec d'une étape par la valeur de retour de l'étape. Dans le cas d'un shell, il s'agit du retour de la dernière valeur. Pour les interpréteurs de commandes Windows CMD et (POSIX) Bash, vous devriez pouvoir définir la valeur de retour manuellement à l'aide de la commande exit 0 comme dernière commande.

8voto

Nux Points 1053

Pour répondre à la question (plus générale) du titre, pour éviter que Jenkins n'échoue, vous pouvez l'empêcher de voir le code de sortie 1. Exemple pour ping :

bash -c "ping 1.2.3.9999 -c 1; exit 0"

Et maintenant vous pouvez, par exemple, obtenir la sortie de ping :

output=`bash -c "ping 1.2.3.9999 -c 1; exit 0"`

Bien sûr, au lieu de ping ... Vous pouvez utiliser n'importe quelle(s) commande(s) - y compris git commit .

6voto

jphuynh Points 86

Vous pouvez utiliser le Plugin Text-finder . Il vous permettra de vérifier la console de sortie pour une expression de votre choix puis de marquer la construction comme Unstable .

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