J'ai un travail qui va créer des fichiers, sauf si l'une des valeurs qui lui sont fournies correspond à une valeur plus ancienne. Quel est le moyen le plus propre à Jenkins d’avorter ou de quitter le travail, sans que ce soit FAILED
? Le comportement correct est correct, je veux donc que la construction soit marquée SUCCESS
.
Cela aboutira à une déclaration if comme ceci;
stage ('Check value') {
if( $VALUE1 == $VALUE2 ) {
//if they do match exit as a success, else continue with the rest of the job
}
}
Je ne veux pas lancer de code d'erreur à moins que cela ne se traduise par une génération réussie.
exit 0
...return 0
code génial qui ne lance pas une exception. Je vais laisser quelqu'un qui a plus de connaissances sur jenkins 2 confirmer ou être infirmeRéponses:
Deviner. En dehors de toute étape (sinon cela mettra fin à l'étape en tant que succès), procédez comme suit:
return
arrêtera l’étape ou le nœud sur lequel vous êtes en cours d’exécution, c’est pourquoi il est important de l’exécuter en dehors de l’étape, alors que le réglagecurrentBuild.result
empêche son échec.la source
Vous pouvez également utiliser error pour quitter l'étape actuelle. Vous n'avez donc pas à tenir compte de la hiérarchie de l'étape actuelle et des éléments similaires:
Mais cela conduirait à une étape rouge si l'erreur se produit dans une étape.
Cela dépend de vos besoins, de la manière que vous souhaitez utiliser.
la source
RuntimeException
ou lancez-la au lieu de devoir intercepter toutes les exceptions et de vérifier un drapeauHonnêtement, vous ne devriez pas avoir besoin d'utiliser spécifiquement la commande exit, mais il existe un plug-in BuildStep conditionnel pouvant aboutir au même résultat final (code qui ne s'exécute pas).
Je ne me suis pas encore heurté à cela, donc je n'ai pas utilisé le plugin.
Il existe également des conditions telles que trouvées dans cet article antérieur sur Stack Overflow sur Jenkins: Jenkins Pipeline Conditional Condition / Stage
la source
exit
commande littérale " - si donc je m'excuse, c'est mon malentendu.Cette
Executor.interrupt(Result)
méthode est le moyen le plus propre et le plus direct que j'ai pu trouver pour arrêter une construction prématurément et la marquer comme un succès.Avantages :
Inconvénients :
la source