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