在 Jenkins 中使用声明式管道步骤在并行步骤中分配变量

Assigning variables in a parallel step using Declarative Pipeline steps in Jenkins

我正在尝试将我的脚本化管道转换为声明式管道,并 运行 解决一些基本的(我认为)问题。

    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 {} 块,但这似乎也没有用。

知道如何设置这些类型的变量吗?

参见 ,您可以在 script 步骤中执行任意管道脚本。以你为例:

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