Jenkinsfile里设置的环境变量在后续stage读取不到怎么办?

FSD-子伯 阅读 28

在Jenkinsfile的environment块里定义了变量APP_VERSION,但执行到测试阶段用echo ${APP_VERSION}时显示未定义。已经试过把变量写在agent前面、用双引号包裹,甚至手动export,还是报错“未声明的变量”。这是语法问题还是配置位置不对?

我的Jenkinsfile片段:

pipeline {  
    agent any  
    environment {  
        APP_VERSION = '1.0.0'  
    }  
    stages {  
        stage('Build') {  
            steps {  
                echo "Build版本:${APP_VERSION}"  // 这里能正常输出  
            }  
        }  
        stage('Test') {  
            steps {  
                script {  
                    echo "测试用版本:$APP_VERSION" // 这里报错  
                }  
            }  
        }  
    }  
}

Jenkins版本2.401.3,pipeline插件最新版。明明其他stage能用,为什么测试阶段突然找不到?

我来解答 赞 5 收藏
二维码
手机扫码查看
1 条解答
♫一茹
♫一茹 Lv1
你这个情况我遇到过,environment里定义的变量如果在script块里用$APP_VERSION这种写法会报错。我一般直接改成env.APP_VERSION就解决了,Jenkins对变量作用域处理有点坑。改成这样:

stage('Test') {
steps {
script {
echo "测试用版本:${env.APP_VERSION}"
}
}
}
点赞 6
2026-02-07 14:13