Jenkins Pipeline中的自定义环境变量

  1. Jenkins中自带很多的环境变量,这些大部分都是构建相关的值,可以在网页localhost:8080/env-vars.html/里面查看。这些是全局可见的,需要随便取用
    在这里插入图片描述

  2. 但是在我们写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%

变量的写入

自定义环境变量的写入归纳起来有下面几种

  1. 在stage中使用environment {}块改写,他只能改写这种方式定义的变量
    environment {
    key=“value”
    }

  2. 脚本式环境变量,他只能重写脚本式环境变量

steps{
script{
script
{
env.SCRIPT_VARIABLE = “1” // 脚本式创建一个环境变量
}
}
}

  1. 使用withEnv。withEnv可以声明式和脚本式定义的变量,但是这种改写只能在withEnv下临时生效。如下

withEnv([“VAR=value”]) {

}

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐