首页 > 解决方案 > Jenkinsfile:环境变量:${env.varname} 和裸 $varname 之间的区别?

问题描述

在 Jenkinsfile 中,我们可以通过varname两种方式使用环境变量(比如 ):${env.varname}和 bare $varname。它们之间有什么区别?有什么规则可以正确区分它们吗?

为了了解它们是如何工作的,我运行了一个具有以下阶段的声明性管道作业:

    stages {
        stage('Jenkins test') {
            environment {
                FOO = "jenkins!"
                FOO_ENV = "hello ${env.FOO}"
                FOO_BARE = "hello ${FOO}"
            }

            steps {
                echo "Message: ${env.FOO}"
                echo "env: ${env.FOO_ENV}"
                echo "bare: ${env.FOO_BARE}"
                sh "echo Message: $FOO"
                sh "echo env: $FOO_ENV"
                sh "echo bare: $FOO_BARE"
            }
        }
    }

并发现两者FOO_ENV和命令FOO_BARE都是相同的:echosh

Message: jenkins!
env: hello jenkins!
bare: hello jenkins!

标签: jenkins

解决方案


推荐阅读