GNU/Linux >> Tutoriels Linux >  >> Linux

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

Pour arrêter la poursuite de l'exécution lorsque la commande échoue :

command || exit 0

Pour continuer l'exécution lorsque la commande échoue :

command || true


Jenkins exécute les étapes de construction du shell en utilisant /bin/sh -xe par défaut. -x signifie imprimer chaque commande exécutée. -e signifie quitter avec échec si l'une des commandes du script a échoué.

Donc, je pense que ce qui s'est passé dans votre cas est votre sortie de commande git avec 1, et à cause de la valeur par défaut -e param, le shell récupère le code de sortie différent de 0, ignore le reste du script et marque l'étape comme un échec. Nous pouvons le confirmer si vous pouvez publier votre script d'étape de construction ici.

Si c'est le cas, vous pouvez essayer de mettre #!/bin/sh pour que le script soit exécuté sans option ; ou faire un set +e ou quelque chose de similaire en plus de l'étape de construction pour remplacer ce comportement.

Modifié :Une autre chose à noter est que, si la dernière commande dans votre script shell retourne du code non-0 , toute l'étape de construction sera toujours marquée comme ayant échoué, même avec cette configuration. Dans ce cas, vous pouvez simplement mettre un true commande à la fin pour éviter cela.

Une autre question connexe


S'il n'y a rien à pousser, git renvoie le statut de sortie 1. L'étape d'exécution de la construction du shell est respectivement marquée comme ayant échoué. Vous pouvez utiliser l'instruction OR || (tuyau double).

git commit -m 'some messasge' || echo 'Commit failed. There is probably nothing to commit.'

Cela signifie, exécutez le deuxième argument si le premier a échoué (état de sortie renvoyé> 0). La deuxième commande renvoie toujours 0. Lorsqu'il n'y a rien à pousser (état de sortie 1 -> exécuter la deuxième commande), echo renverra 0 et l'étape de construction se poursuivra.

Pour marquer la construction comme instable, vous pouvez utiliser l'étape de post-construction Jenkins Text Finder. Il peut passer par la sortie de la console, faire correspondre le modèle (votre écho) et marquer la construction comme instable.


Linux
  1. Exécuter une commande shell lors d'un événement de clic dans une page Web ?

  2. Exécuter une commande où un fichier est trouvé ?

  3. 5 façons d'exécuter des commandes UNIX / Linux (et des scripts shell) en arrière-plan

  4. Exécutez la commande shell dans jenkins en tant qu'utilisateur root ?

  5. Pourquoi popen() invoque-t-il un shell pour exécuter un processus ?

Commande source sous Linux

Comment exécuter une commande Shell avec Python

Comment exécuter des commandes Shell via un serveur HTTP

Interface de commandes

Commande source sur Linux expliquée

Comment exécuter une commande dans un script shell ?