Jenkins环境变量(上)

2021-06-03 18:03:38 浏览数 (1)

一.环境变量

环境变量可以被看作是pipeline与Jenkins交互的媒介。比如,可以在pipeline中通过BUILD_NUMBER变量知道构建任务的当前构建次数。环境变量可以分为Jenkins内置变量和自定义变量。

在pipeline执行时,Jenkins通过一个名为env的全局变量,将Jenkins内置环境变量暴露出来。其使用方法有多种,示例如下:

  1. pipeline {
  2. agent any
  3. stages {
  4. stage('Example') {
  5. steps {
  6. echo "Running ${env.BUILDNUMBER} on ${env.JENKINS_URL}" # 方法1 推荐
  7. echo "Running $env.BUILDNUMBER on $env.JENKINS_URL" # 方法2
  8. echo "Running ${BUILDNUMBER} on ${JENKINS_URL}" # 方法3 不推荐,难排查
  9. }
  10. }
  11. }
  12. }

默认env的属性可以直接在pipeline中引用。所以,以上方法都是合法的。但是不推荐方法三,因为出现变量冲突时,非常难查问题。echo只是为了展示,实际应用可以修改变量来达到不同的定制化。

通过访问http://localhost:8080/env-vars.html/或者http://localhost:8080/pipeline-syntax/globals#env来获取完整列表。在列表中,当一个变量被声明为”For a multibranch project”时,代表只有多分支项目才会有此变量。

打印当前环境变量

  1. sh "printenv" //打印环境变量

二.自定义环境变量

当pipeline变得复杂时,我们就会有定义自己的环境变量的需求。声明式pipeline提供了environment指令,方便自定义变量。比如:

  1. pipeline {
  2. agent any
  3. environment {
  4. CC = "clang"
  5. }
  6. stages {
  7. stage("Example") {
  8. environment {
  9. DEBUG_FLAGS = "-g"
  10. }
  11. steps {
  12. sh "${CC} ${DEBUG_FLAGS}"
  13. sh "printenv"
  14. }
  15. }
  16. }
  17. }

environment指令可以用在pipeline中定义,作用域就是整个pipeline,当定义在stage阶段,只在当前stage有效。

环境变量的互相引用:

  1. environment {
  2. __server_name = 'mail-server'
  3. __version = "${BUILD_NUMBER}"
  4. __artifact_name = "${__server_name}-${__version}.jar"
  5. }

技巧:

自定义变量时,为避免命名冲突,可根据项目或公司加上统一前缀,如__server_name,__就是前缀。

0 人点赞