首页 > 解决方案 > 有没有办法将变量从阶段局部变量设置为 Jenkins 全局变量?

问题描述

有没有办法访问詹金斯全局管道中的阶段局部变量,我正在尝试使用块中的var1值。Example stagepost always

// Declarative //
pipeline {
    agent any
    stages {
        stage('Example') {
            steps {
                def var1 = sh 'ssh yourname@yourmachine 'grep uploadRate= /root/yourscript' '
            }
        }
    }
    post { 
        always { 
            echo 'Reading a Var1 Value' + var1
        }
    }
}

错误:

Error when executing always post condition:
groovy.lang.MissingPropertyException: No such property: var1 for class: WorkflowScript

标签: jenkinsgroovyjenkins-pipelinejenkins-groovyjenkins-job-dsl

解决方案


您不能直接调用在后期操作的构建步骤中分配的变量。作为一种解决方案,您可以将“示例”阶段结果传递给文件,然后通过使用环境注入插件,您可以访问后操作中的值。

安装插件后,在作业配置中设置文件名。 插件设置

pipeline {
    agent any
    stages {
        stage('Example') {
            steps{
            script {
                sh 'date > output.txt'    
            }
          }
        }
    }
    post { 
        always { 
            script {
            curDate = readFile 'outFile.txt'
            echo "The current date is ${curDate}"    
            }
        }
    }
}

推荐阅读