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”
Slave 配置变量
在Jenkins slave 中可以设置 slave特有的环境变量,只有绑定到这个slave上运行的job,Jenkins才会在build运行时候插入设置的环境变量。
“Node Properties” -> “Environment variables”
Job 参数
如果Job中设置了参数,Jenkins把参数作为环境变量的形式插入到构建中,从而 构建脚本和step中可以直接使用。Job配置中勾选“Thisproject is parameterized”设置参数。
Job中插入的环境变量
然后再job配置中勾选 “Injectenvironment variables to the build process”就可以添加环境变量了。通过这种方式添加的环境变量,只有这个job的构建过程中可见,其他jobs的构建不可见。
环境变量生效顺序
既然上面有那么多的地方可以设置环境变量,当多个地方都有定义的时候,
全局环境变量 < Slave 配置环境变量 < Job 参数 < Job injected 环境变量
一般不Override系统变量,也就是说不重复定义系统内置的变量,否则可能出现不可预知的问题。
查看环境变量报告
安装插件:
https://wiki.jenkins.io/display/JENKINS/Build+Environment+Plugin
https://wiki.jenkins-ci.org/display/JENKINS/EnvInject+Plugin
然后可以查看构建build中的环境变量,同时可以比较不同builds的环境变量的差别,这在一些构建失败debug时候很有用。