专栏首页finleyMaJenkins2 学习系列6 -- 环境变量

Jenkins2 学习系列6 -- 环境变量

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

Jenkins内置变量

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

pipeline {
  agent any
  stages {
    stage('Example') {
      steps {
         echo "Running ${env.BUILDNUMBER} on ${env.JENKINS_URL}" # 方法1
         echo "Running $env.BUILDNUMBER on $env.JENKINS_URL"  # 方法2
         echo "Running ${BUILDNUMBER} on ${JENKINS_URL}"   # 方法3 不推荐,难排查
      }
    }
  }
}

默认env的属性可以直接在pipeline中引用。所以,以上方法都是合法的。但是不推荐方法三,因为出现变量冲突时,非常难查问题。

那么,env变量都有哪些可用属性呢?通过访问<Jenkins master的地址>/pipeline-syntax/globals#env来获取完整列表。在列表中,当一个变量被声明为"For a multibranch project"时,代表只有多分支项目才会有此变量。

image.png

下面我们简单介绍几个在实际工作中经常用到的变量。

  • BUILD_ NUMBER:构建号,累加的数字。在打包时,它可作为制品名称的一部分,比如server-2.jar。
  • BRANCH_ NAME:多分支pipeline项目支持。当需要根据不同的分支做不同的事情时就会用到,比如通过代码将release分支发布到生产环境中、master分支发布到测试环境中。
  • BUILD_ URL:当前构建的页面URL。如果构建失败,则需要将失败的构建链接放在邮件通知中,这个链接就可以是BUILD _URL。
  • GIT BRANCH:通过git拉取的源码构建的项目才会有此变量。

在使用env变量时,需要注意不同类型的项目,env变量所包含的属性及其值是不一样的。比如普通pipeline任务中的GIT BRANCH变量的值为origin/master,而在多分支pipeline任务中GIT BRANCH变量的值为master。 所以,在pipeline中根据分支进行不同行为的逻辑处理时,需要留意。

自定义变量

  1. pipeline提供的environment指令
pipeline {
    agent any
    environment {
        # 覆盖默认的PATH变量值
        PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin"
        name='jack'
    }
    stages {
        stage("test env") {
          steps {
            sh "printenv"  #调试,打印所有env变量
            echo "${name}"  # jack
            echo "${env.name}"  # jack
          }
        }
     }
  }

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

  1. 环境变量的互相引用
environment {
  __server_name = 'email-server'
  __version = "${BUILD_NUMBER}"
  __artifact_name = "${__server_name}-${__version}.jar"
}

小技巧

  1. 在调试pipeline时,可以再开始阶段加一句 sh 'printenv' 将所有env变量打印出来。
  2. 自定义变量时,为避免命名冲突,可根据项目或公司加上统一前缀,如__server_name,__就是前缀。
  3. 自定义全局环境变量 定义全局环境变量可以跨pipeline使用 进入Jenkins -- Manage Jenkins -- 找到Global properties -- 勾选Environment variables

自定义全局环境变量会被加入env属性列表中,所以使用时可以直接用${env.g_name}引用。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Jenkins2 学习系列19 -- 使用 Script Console批量修改Jenkins任务

    原文:http://showme.codes/2019-02-23/jenkins-script-console-in-practice/

    mafeifan
  • Jenkins2 学习系列13 -- 邮件和Slack通知

    需求:需要把Jenkins的构建情况通过邮件,钉钉,Slack等通知告诉相关的测试,开发人员。 结合之前讲的 post钩子 更进一步可以实现失败时只通知给开发...

    mafeifan
  • 我需要一台好点的服务器

    知道 Jira 这个项目管理工具已经很长时间,尤其在国外非常流行,最早给国外客户做项目时很多提供的项目管理系统就是 Jira。 关于Jira 你还应该知道以下...

    mafeifan
  • 艾伦·图灵传

    本书是公认的图灵最权威传记。艾伦·图灵是现代计算机科学之父,在24岁时奠定了计算机的理论基础。二战期间,他为盟军破译密码,为结束战争做出巨大贡献。战后,他开创性...

    用户3157710
  • CC2530基础实验之继电器实验(双联)

    w候人兮猗
  • Spring Security 实战干货:动态权限控制(上)思路

    欢迎阅读 Spring Security 实战干货系列[1]文章 。截止目前已经对 基于配置 和 基于注解 的角色访问控制进行了讲解。对于一些小项目来说基本是够...

    码农小胖哥
  • 用paxos实现多副本日志系统--basic paxos部分

    为了理解paxos协议,开始时看了好些资料,但始终没有理解透,直到我看了这个视频:http://v.youku.com/v_show/id_XNjgyODc3O...

    unlike
  • 18个网站优化技巧

    18个网站优化技巧 快速的页面加载对提升搜索引擎排名、网站转化率和整体的用户体验是非常重要的。网站页面的加载速度也是衡量网站性能的一个重要因素。 ?   ...

    小小科
  • 杨老师课堂之Excel VBA 程序开发第七讲自动备份

    方式1:本节课件下载地址:链接: https://pan.baidu.com/s/1DhCDxiPRSQw2vjowgjWSRQ 密码: x6pe

    杨校
  • 超棒离线手册--开发者的福音

    昨天在分享如何安装man手册时候,有读者留言提到了zeal,特意去体验了一下,感觉还不错,也分享给大家。在这里再次感谢读者【0x27】。

    编程珠玑

扫码关注云+社区

领取腾讯云代金券