使用Jenkins中的Declarative Pipeline步骤在并行步骤中分配变量

时间:2017-02-16 15:19:16

标签: jenkins jenkins-pipeline

我试图将我的Scripted管道转换为声明性管道并运行一些基本的(我认为)问题。

    stage ('Deploy to Docker') {
        steps {
            parallel (
                "instance1" : {
                    environment {
                        containerId = sh(script: "docker ps --quiet --filter name=${fullDockerImageName}", returnStdout: true).trim()
                    }
                    steps {
                        ....
                    }
                }
            )
        }
   }

这会导致以下异常:

WorkflowScript: 197: Expected a step @ line 197, column 29.
                           containerId = sh(script: "docker ps --quiet --filter name=${fullDockerImageName} ", returnStdout: true).trim()

由于我不允许在steps {}块内进行变量分配,因此我将其移至environment {}块,但这似乎也没有。

关于如何设置这些变量的任何想法?

1 个答案:

答案 0 :(得分:4)

请参阅my answer here,您可以在script步骤中执行任意管道脚本。以你的榜样为例:

stage ('Deploy to Docker') {
    steps {
        parallel (
            "instance1" : {
                steps {
                    script {
                        env['containerId'] = sh(script: "docker ps --quiet --filter name=${fullDockerImageName}", returnStdout: true).trim()
                    }
                    ....
                }
            }
        )
    }
}