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 ?
Réponses
Trop de publicités?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'
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é.
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.
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
.
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
.