Comment faire simple si-états à l'intérieur d'une déclarative pipeline dans Jenkins
Je suis en train de convertir mon Script pipeline d'une Déclarative Pipeline.
Vous vous demandez comment faire un simple if dans un steps {}
bloc.
stage ('Deploy to Docker') {
steps {
parallel (
"instance1" : {
environment {
containerId = sh(script: "docker ps --quiet --filter name=${fullDockerImageName}", returnStdout: true).trim()
}
steps {
if (containerId.isEmpty()) {
docker.image('some/image').run("--name ${fullDockerImageName}")
}
}
}
)
}
}
Cela provoque l'Exception suivante:
WorkflowScript: 201: Expected a step @ line 201, column 29.
if (containerId.isEmpty()) {
Depuis que je ne suis pas autorisé à faire une simple if(..)
à l'intérieur d'un steps {}
bloc, aucune idée sur comment faire?
Il ne semble pas avoir de sens pour en faire une étape avec un when {}
, car il y a plusieurs étapes qui se passe dans un simple stade (à partir d'un arrêté du conteneur, si elle existe, etc).
Quelle est la meilleure façon de faire un simple si?
C'est extrêmement comme mon autre question (stackoverflow.com/questions/42277936/...), mais je voulais documenter à la fois extrêmement scénarios courants (le if et le var-affectation), de sorte que l'affichage de toute façon. Peut-être que vous avez une vision différente de ce que c'est?
OriginalL'auteur Jasper Roel | 2017-02-16
Vous devez vous connecter pour publier un commentaire.
Malheureusement, vous avez de l'envelopper dans un
script
, pour l'instant. Comme il dit ici;Et si vous regardez l'étape de référence-il d'une simple liste de tous les plugins qui contribue pipeline étapes. Et aussi loin que je peux voir, il n'y a pas d'étape de soutenir if, then, else. La réponse est donc pas, pour l'instant il n'est pas possible, mais, il devrait être assez simple à mettre en œuvre la présente comme une étape, et l'ajouter à un plugin.
OriginalL'auteur Jon S
Cela devrait fonctionner
OriginalL'auteur Reuben Abela
À l'aide de la Conditionnel BuildStep plugin, vous pouvez ajouter un
when {}
étape du traitement d'un conditionnel.La suivante devrait fonctionner, sauf problèmes de syntaxe avec la fonction isEmpty() vérifier dans ce contexte.
Le blog liées est ici.
MODIFIER: Désolé, le snytax semble plus proche de ce qui n'a pas accès à votre besoin conditionnelle:
OriginalL'auteur IronSean
Je pense que c'est le plus correct/les meilleures pratiques sur la façon dont les à l'aide de if/else ou de la logique de contrôle au sein de votre Jenkins Déclarative pipeline.
https://jenkins.io/doc/book/pipeline/syntax/#when
@IronSean réponse, ne semble pas comme vous avez besoin de ce plugin (ou plus).
OriginalL'auteur Ruwd