Jenkins 系列: (七) Jenkins 环境变量管理


今天我们谈谈 Jenkins 中环境变量相关的问题,Jenkins中有多个地方可以设置环境变量,从而在build 构建过程中可以使用。


环境变量的来源

Jenkins系统变量

Jenkins 有很多系统内置的变量,在build 脚本或者step中可以直接使用,比如 JENKINS_HOME,JENKINS_URL, JOB_NAME,JOB_URL, BUILD_ID, BUILD_NUMBER, BUILD_URL,WORKSPACE 等。

系统变量在所有的jobs中都可以使用。


全局变量 (Configure System )

在系统配置中,可以设置全局变量,和系统变量一样,全局变量在所有job中都可以使用。

Global properties” -> “Environment variables”

Jenkins 系列: (七) Jenkins 环境变量管理

Slave 配置变量

在Jenkins slave 中可以设置 slave特有的环境变量,只有绑定到这个slave上运行的job,Jenkins才会在build运行时候插入设置的环境变量。

“Node Properties” -> “Environment variables”


Jenkins 系列: (七) Jenkins 环境变量管理

Job 参数

如果Job中设置了参数,Jenkins把参数作为环境变量的形式插入到构建中,从而 构建脚本和step中可以直接使用。

Job配置中勾选“Thisproject is parameterized”设置参数。

Job中插入的环境变量

然后再job配置中勾选 “Injectenvironment variables to the build process”就可以添加环境变量了。通过这种方式添加的环境变量,只有这个job的构建过程中可见,其他jobs的构建不可见。

Jenkins 系列: (七) Jenkins 环境变量管理


环境变量生效顺序

既然上面有那么多的地方可以设置环境变量,当多个地方都有定义的时候,

全局环境变量 < Slave 配置环境变量 < Job 参数 < Job injected 环境变量   

一般不Override系统变量,也就是说不重复定义系统内置的变量,否则可能出现不可预知的问题。



查看环境变量报告


然后可以查看构建build中的环境变量,同时可以比较不同builds的环境变量的差别,这在一些构建失败debug时候很有用。

Jenkins 系列: (七) Jenkins 环境变量管理

Jenkins 系列: (七) Jenkins 环境变量管理