Comment mark Jenkins s'appuie en tant que de SUCCÈS que sur d'erreur spécifique à la sortie des valeurs de (autre que 0)?
Quand je lance un Execute shell
étape de génération d'exécuter un script et que le script renvoie 0
, Jenkins
drapeaux de la construire comme SUCCESS
, sinon, il le signale en tant que FAILURE
qui est le comportement par défaut comme 0
signifie pas d'erreurs, et toute autre valeur représente une erreur.
Est-il un moyen de marquer un build comme SUCCESS
seulement si la valeur de retour correspond à une valeur spécifique autre que 0
(par ex. 1
,2
,3
...)?
PS: dans le cas où vous vous demandez pourquoi je suis à la recherche pour que, cela me permettra d'effectuer des tests unitaires de Jenkins lui-même que mes scripts sont écrits pour revenir différentes valeurs de sortie en fonction de divers facteurs, me permettant ainsi de s'attendre à certaines valeurs, en fonction de certaines erreurs de configuration et assurez-vous tout mon Jenkins intégration ramasse sur ceux-ci.
OriginalL'auteur Max | 2012-11-25
Vous devez vous connecter pour publier un commentaire.
Tout droit, je suis allé sur
IRC #jenkins
, et peu de nouvelles concernant un plugin pour définir un particulier statut d'emploi selon le code de sortie 🙁 j'ai réussi à faire ce que je voulais par la création d'unExecute shell
étape avec le contenu suivant:-Exécution du script sous
bash -c
permet d'attraper le code de sortie et empêcheJenkins
de l'arrêt de construire exécution lorsque que le code de sortie est différent de 0 (ce qui normalement n').-
\$?
est interprété comme$?
après l'exécution du script et représente son code de sortie.-
$EXPECTED_EXIT_CODE
est l'un de mes paramètres de travail qui définit le code de sortie que j'attends.-Le
if
déclaration est tout simplement la suivante: si j'arrive à attendre le code de sortie, la sortie à 0, de sorte que la construction est marqué commeSUCCESS
, d'autre sortie avec 1, de sorte que la construction est marqué commeFAILURE
./path/to/myscript.sh; if [ "$?" == "$EXPECTED_EXIT_CODE" ]; then exit 0; else exit 1; fi
(peut même remplacer le ';'s avec de nouvelles lignes, comme dans n'importe quel autre shell-script).J'ai d'abord essayé ce que vous avez suggéré, mais il ne fonctionne pas: dans ma configuration (qui est une installation par défaut) dès que jenkins détecte le code de sortie du script étant différent de 0, il s'arrête et n'est pas évalué par les autres commandes, c'est parce que la
Execute shell
étape est exécutée avec la-e
commutateur par Jenkins, qui raconte l'bash interprète à s'arrêter à la première erreur.Is there a way to prevent jenkins from usign -e?
J'ai actuellement un Windows config ne peut donc pas confirmer, mais autant que je sache , Jenkins ne contrôle que le le résultat de la dernière commande dans Exécuter shell bloc. (Avez-vous mis en deux Exécuter shell blocs, peut-être?)
non, en une seule
Execute shell
bloc. Je suis sous linuxjenkins s'exécute par défaut du shell avec set -xe pour qu'elle quitte à la première ligne de code qui produit autre chose qu'un code de sortie 0. enveloppez votre code sh avec set +e et set-e de contourner cela.
OriginalL'auteur Max
Je voudrais continuer à utiliser au lieu de la sortie 0 dans le cas où vous avez d'autres éléments ci-dessous que vous avez besoin de courir à travers.
OriginalL'auteur Bruce Wayne
Pouvez le gérer via le Texte de recherche de Plugin:
Failed on XXX - Exiting with RC 2
par exemple, si vous décidez RC 2, 3 et 4 devrait marquer le construire comme "Instables", rechercher le texte dans ce modèle:
Exiting with RC [2-4]
.SUCCESS
, le but étant de créer de nombreux emplois dans connu à défaut de conditions et assurez-vous que les scripts rapport de ces échecs, et s'ils le font, envisager de succès). Je souhaite juste que il y a un plugin similaire qui serait d'inspecter le code de retour au lieu de la sortie, comme j'ai un peu de confiance le code de retour de plus, mais si je ne trouve pas leText-finder
plugin fera l'affaire. Merci beaucoup.Seul problème, comme l'a déclaré la documentation:
"The search is always performed, even on builds which returned a non-zero exit status, but the reclassification only applies to builds which returned an overall exit status of zero"
qui signifie que j'ai à la force de mes scripts de ne pas retourner la valeur 0, même en cas d'échec de ce plugin fonctionne 🙁 je ne veux évidemment pas parce que ces mêmes scripts seront utilisés pour les travaux de production et doit retourner appropriée les codes de sortie.Oui, il suppose qu'un retour non nul de la valeur est une erreur, avant l'analyse le journal.
OriginalL'auteur Gonen
Créer un wrapper pour votre script shell. Ont que wrapper de l'exécution de vos tests et de définir la resturn valeur en fonction des critères qui vous voulez.
OriginalL'auteur Bryan Oakley
Je fais comme ça:
Ici
+e
est pour éviter le défaut Jenkins comportement de DÉFAILLANCE de l'état sur toute l'éternuement pendant votre exécution de script. Puis revenir avec-e
.De sorte que vous pouvez gérer votre code de sortie comme il convient, d'autre finit par ÉCHOUER avec le code de retour.
OriginalL'auteur RAM237
Si robocopy code de sortie est inférieur ou égal à 2, alors il sera de sortie avec succès.
Robocopy Codes De Sortie:
OriginalL'auteur Ankit Patel