Jenkinsfile 流水线 pipeline 使用和设置环境变量
官网: https://jenkins.io/zh/doc/book/pipeline/jenkinsfile/#设置环境变量
使用 jenkins 的变量
Jenkins 流水线通过全局变量 env 提供环境变量,它在 Jenkinsfile 文件的任何地方都可以使用。Jenkins 流水线中可访问的完整的环境变量列表记录在 ``${YOUR_JENKINS_URL}/pipeline-syntax/globals#env``。他可以直接使用 jenkins 的内置环境变量。
假如有环境变量 ACC ,那么你有两种方式引用它:
明确地由 ${env.ACC}
隐式地 ${ACC}
例如:
Jenkinsfile (Declarative Pipeline) pipeline { agent any stages { stage('Example') { steps { echo "Running ${env.BUILD_ID} on ${env.JENKINS_URL}" } } } }
设置环境变量
在 Jenkins 流水线中,取决于使用的是声明式还是脚本式流水线,设置环境变量的方法不同。声明式流水线支持 environment 指令,而脚本式流水线的使用者必须使用 withEnv 步骤。
Jenkinsfile (Declarative Pipeline) pipeline { agent any environment { CC = 'clang' } stages { stage('Example') { environment { DEBUG_FLAGS = '-g' } steps { sh 'printenv' } } } }
用在最高层的 pipeline 块的 environment 指令适用于流水线的所有步骤。
定义在 stage 中的 environment 指令只适用于本 stage 中的步骤。
更改全局变量
注意: 对 env.acc 和 acc 直接赋值,这两种情况还是有区别的。
pipeline { agent any environment { FOO = "initial FOO env value" } stages { stage("Stage 1") { steps { script { echo "FOO is '${FOO}'" // prints: FOO is 'initial FOO env value' env.BAR = "bar" } } } stage("Stage 2") { steps { echo "env.BAR is '${BAR}'" // prints: env.BAR is 'bar' echo "FOO is '${FOO}'" // prints: FOO is 'initial FOO env value' echo "env.FOO is '${env.FOO}'" // prints: env.FOO is 'initial FOO env value' script { FOO = "test2" env.BAR = "bar2" } } } stage("Stage 3") { steps { echo "FOO is '${FOO}'" // prints: FOO is 'test2' echo "env.FOO is '${env.FOO}'" // prints: env.FOO is 'initial FOO env value' echo "env.BAR is '${BAR}'" // prints: env.BAR is 'bar2' script { FOO = "test3" } echo "FOO is '${FOO}'" // prints: FOO is 'test3' } } } }
共 0 条评论