Jenkins Pipeline中的自定义环境变量
Jenkins pipeline 自定义环境变量
Jenkins Pipeline中的自定义环境变量
-
Jenkins中自带很多的环境变量,这些大部分都是构建相关的值,可以在网页localhost:8080/env-vars.html/里面查看。这些是全局可见的,需要随便取用
-
但是在我们写pipeline的时候,这些肯定是不够的。这就可以通过自定义环境变量来实现了。
定义方法
在声明式的pipeline中,环境变量定义一般建议使用它environment块定义,格式如下
environment{
VAR1= “this is var1”
}
这个environment可以和stages块平级,是全局的的环境变量;也可以在某个stages定义,此时该变量只能在定义的stage有效,其他stage就失效了,打印为null,不报错(这个让人讨厌,调试比较困难)。代码如下。
pipeline
{
agent any
environment
{
VAR1 = "define var1 before stages"
}
stages
{
stage("EnvVar")
{
environment
{
VAR2 = "define var2 in EnvVar stage"
}
steps
{
echo "print custom var in EnvVar"
echo "VAR1 = ${env.VAR1}"
echo "VAR2 = ${env.VAR2}"
}
}
stage("PrintVar")
{
steps
{
echo "print custom var in PrintVar stage"
echo "VAR1 = ${env.VAR1}"
echo "VAR2 = ${env.VAR2}"
}
}
}
}
声明式的pipeline中也可以插入脚本定义环境变量,格式如下
script{
env.varname=“value”
}
脚本定义环境变量比较特别,可以跨stage使用。看个例子(上面代码的增量)
pipeline
{
agent any
environment
{
VAR1 = "define var1 before stages"
}
stages
{
stage("EnvVar")
{
environment
{
VAR2 = "define var2 in EnvVar stage"
}
steps
{
script{
env.VAR3="define var2 with script in EnvVar stage"
}
echo "print custom var in EnvVar"
echo "VAR1 = ${env.VAR1}"
echo "VAR2 = ${env.VAR2}"
echo "VAR3 = ${env.VAR3}"
}
}
stage("PrintVar")
{
steps
{
echo "print custom var in PrintVar stage"
echo "VAR1 = ${env.VAR1}"
echo "VAR2 = ${env.VAR2}"
echo "VAR3 = ${env.VAR3}"
}
}
}
}
变量的引用
前面已经有引用的,这里归总一下语法
e n v . V A R 或者直接 {env.VAR}或者直接 env.VAR或者直接{VAR}
推荐第一种更规范的用法,可读性更强一下。
如果Jenkins部署在windows环境下,运行的bat指令要引用,则引用如下,无需使用env引入。
%VAR%
变量的写入
自定义环境变量的写入归纳起来有下面几种
-
在stage中使用environment {}块改写,他只能改写这种方式定义的变量
environment {
key=“value”
} -
脚本式环境变量,他只能重写脚本式环境变量
steps{
script{
script
{
env.SCRIPT_VARIABLE = “1” // 脚本式创建一个环境变量
}
}
}
- 使用withEnv。withEnv可以声明式和脚本式定义的变量,但是这种改写只能在withEnv下临时生效。如下
withEnv([“VAR=value”]) {
…
}
更多推荐
所有评论(0)