无法在JenkinsFile(脚本)的各个阶段之间移动定义的变量

时间:2019-10-16 12:21:47

标签: docker jenkins groovy jenkins-pipeline

我有一个脚本化的詹金斯文件:

node{
build_id = env.BUILD_ID
stage("Clone") {
    checkout scm
}
stage("Build"){
    def docker_image = docker.build("articlestream:${env.BUILD_ID}")
}
stage("test"){
    // we should do testing here in the future
}
stage("Docker Push"){

    //our Registry
    docker.withRegistry("https://localhost:4000", "docker-registry-credentials") {

        docker_image.push("latest")
    }
}

}

我期望在def docker_image阶段可以访问"Docker Push"。但是,出现以下错误:

groovy.lang.MissingPropertyException: No such property: docker_image for class: groovy.lang.Binding
    at groovy.lang.Binding.getVariable(Binding.java:63)
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:270)
    at org.kohsuke.groovy.sandbox.impl.Checker$6.call(Checker.java:291)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:295)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:271)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:271)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:271)
    at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:29)
    at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)
    at WorkflowScript.run(WorkflowScript:17)

这表明docker_image在此阶段不是变量。我可以确定docker在构建阶段正在构建映像(已检查日志),有人可以帮我改写docker_image.push("latest")行,以便我进行推送吗?

0 个答案:

没有答案