一.环境变量

环境变量可以被看作是pipeline与Jenkins交互的媒介。比如,可以在pipeline中通过BUILD_NUMBER变量知道构建任务的当前构建次数。环境变量可以分为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中引用。所以,以上方法都是合法的。但是不推荐方法三,因为出现变量冲突时,非常难查问题。echo只是为了展示,实际应用可以修改变量来达到不同的定制化。

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

打印当前环境变量

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

二.自定义环境变量

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

pipeline {
agent any
environment {
CC = "clang"
}
stages {
stage("Example") {
environment {
DEBUG_FLAGS = "-g"
}
steps {
sh "${CC} ${DEBUG_FLAGS}"
sh "printenv"
}
}
}
}

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

环境变量的互相引用:

environment {
__server_name = 'mail-server'
__version = "${BUILD_NUMBER}"
__artifact_name = "${__server_name}-${__version}.jar"
}

技巧:

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

三.自定义全局变量

定义全局环境变量可以跨pipeline使用。

进入Jenkins→Manage Jenkins→Confiure System找到Global properties→勾选"Environment variables"复选框,单击“Add”按钮,在输入框中输入变量名和变量值即可。

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

四.常用变量定义

1.定义构建名和构建显示,在script包裹后直接覆盖即可

currentBuild.displayName = "1.2.3-SNAPSHOT"
currentBuild.description ="分支: " + "2020-09-18"

还可以插入html显示颜色或者链接

currentBuild.setDescription(‘<p><font color="blue">All cases Passed but maybe include retry cases</font></p>’)

2.设置job状态

jenkins job的状态,常用状态有几种:SUCCESS,UNSTABLE,FAILURE,ABORTED,可以在pipeline脚本中自主修改job的状态,但只能由好的状态变成坏的。例如发布成功是SUCCESS,可以修改为UNSTABLE。

currentBuild.result = 'FAILURE'

五.常用环境变量

BUILD_NUMBER

构建号,累加的数字。在打包时,它可作为制品名称的一部分,比如server-${BUILD_NUMBER}.jar

BRANCH_NAME

多分支pipeline项目支持。当需要根据不同的分支做不同的事情时就会用到,比如通过代码将release分支发布到生产环境中、master分支发布到测试环境中。

BUILD_URL

当前构建的页面URL。如果构建失败,则需要将失败的构建链接放到邮件通知中,这个链接就可以是BUILD_URL

GIT_BRANCH

通过git拉取的源码构建的项目才会有此变量。在使用env变量时,需要注意不同类型的项目,env变量所包含的属性及其值是不一样的。比如普通pipeline任务中的GIT_BRANCH变量值为roigin/master,在多分支pipeline中GIT BRANCH变量的值为master

所以,在pipeline中根据分支进行不同行为的逻辑处理时,需要留意。

CHANGE_ID

对于与某种更改请求相对应的多分支项目,这将被设置为更改ID,例如拉取请求号。

CHANGE_URL

对于与某种更改请求相对应的多分支项目,这将被设置为更改URL。

CHANGE_TITLE

对于对应于某种变更请求的多分支项目,这将被设置为更改的标题。

CHANGE_AUTHOR

对于对应于某种变更请求的多分支项目,这将被设置为拟议更改的作者的用户名。

CHANGE_AUTHOR_DISPLAY_NAME

对于对应于某种变更请求的多分支项目,这将被设置为作者的人名。

CHANGE_AUTHOR_EMAIL

对于对应于某种变更请求的多分支项目,这将被设置为作者的电子邮件地址。

CHANGE_TARGET

对于对应于某种变更请求的多分支项目,这将被设置为可以合并更改的目标或基本分支。

BUILD_ID

当前版本ID,与BUILD_NUMBER相同,用于在1.597+中创​​建的构建,但较旧版本的YYYY-MM-DD_hh-mm-ss时间戳记

BUILD_DISPLAY_NAME

当前版本的显示名称,默认为“#153”。

JOB_NAME

此构建项目的名称,如“foo”或“foo / bar”。

JOB_BASE_NAME

此建立项目的名称将剥离文件夹路径,例如“bar / foo”的“foo”。

BUILD_TAG

“jenkins- $ {JOB_NAME} - $ {BUILD_NUMBER} ”的字符串。JOB_NAME中的所有正斜杠(/)都会用破折号( - )替换。方便放入资源文件,jar文件等,以方便识别。

EXECUTOR_NUMBER

识别执行此构建的当前执行程序(在同一台计算机的执行程序中)的唯一编号。这是您在“构建执行者状态”中看到的数字,但数字从0开始,而不是1。

NODE_NAME

代理的名称,如果构建是代理,或者“主”,如果在主机上运行

NODE_LABELS

空格分隔的节点分配的标签列表。

WORKSPACE

分配给构建作为工作区的目录的绝对路径。

JENKINS_HOME

Jenkins主节点上分配的目录绝对路径存储数据。

JENKINS_URL

完整的Jenkins网址,例如http://server:port/jenkins/ (注意:只有在系统配置中设置了Jenkins URL)

JOB_URL

此作业的完整URL,如http://server:port/jenkins/job/foo/ (必须设置Jenkins URL)

SVN_REVISION

Subversion版本号,当前已被检出到工作区,如“12345”

SVN_URL

当前已经检出到工作空间的Subversion URL。

Jenkins环境变量的更多相关文章

  1. 10分钟搞定让你困惑的 Jenkins 环境变量

    前言 Jenkins, DevOps 技术栈的核心之一,CI/CD 离不开编写 Pipeline 脚本,上手 Jenkins ,简单查一下文档,你就应该不会被 agent,stages,step 这类 ...

  2. jenkins 环境搭建与入门示例

    环境说明: 1.win7 2.tomcat 9.0.0.M17 3.jenkins 2.32.2.war jenkins 环境搭建 1.下载jenkins部署包 https://jenkins.io/ ...

  3. Jenkins可用环境变量列表以及环境变量的使用(Shell/Command/Maven/Ant)

    一.可用环境变量列表(以下来自google翻译): BRANCH_NAME 对于多分支项目,这将被设置为正在构建的分支的名称,例如,如果您希望从而master不是从特征分支部署到生产. CHANGE_ ...

  4. Jenkins可用环境变量以及使用方法

    Jenkins可用环境变量以及使用方法

  5. Jenkins内置环境变量的使用

    一.查看Jenkins有哪些环境变量 1.新建任意一个job 2.增加构建步骤:Execute shell 或 Execute Windows batch command 3.点击输入框下方的“可用环 ...

  6. [Jenkins] 如何修改jenkins上的环境变量

    现象 当本地的环境变量发生变化时,在jenkins 构建时里面访问的环境变量仍是之前旧的(未更新的)导致构建出现错误,比如我以我所遇到的问题进行简单写下,下面例子中我是涉及到修改 PYTHONPATH ...

  7. jenkins添加环境变量 ,win 10的 环境变量如下,win7 就是不加也可以运行,不报 “python 不是内部命令 ” 的错误。

    jenkins 添加win 10的 环境变量如下,win7 就是不加也可以运行,不报 “python 不是内部命令 ” 的错误,暂时不知道怎么回事.    jenkins这样添加环境变量 .

  8. jenkins之SSH Publishers环境变量

    我使用的是docker部署jenkins,使用172.16.1.245作为部署服务器. 1.问题 在SSH Publishers里执行的环境变量,不是ssh server主机设置的环境变量,这样会导致 ...

  9. Jenkins配置MSBuild时使用环境变量

    [MSBuild Plugin]插件在使用环境变量有个很奇葩的方式,比如我们通常在Windows的节点机器上,使用WORKSPACE环境变量时,批处理应该这样写%WORKSPACE%,而有时插件确不能 ...

随机推荐

  1. Python | Python语法基础

    目录 前言 1. 变量与简单数据结构 2. 列表相关 3. 集合 4. If语句 5. 字典 6. 用户输入和while循环 7. 函数 8. 类与对象 9. 文件 10. 异常 11. 测试 最后 ...

  2. 菜鸡的Java笔记 实践 - java 数组操作

    讲解一个继承的实现思路                要求定义一个数组操作类(Array类),在这个类里面可以进行整型数组的操作,由外部传入数组的大小        ,并且要求实现数据的保存以及数据的 ...

  3. tomcat的log日志乱码解决方案

    Intellij idea Tomcat输出log中文乱码 配置tomcat在VM options添加-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8 重启后控 ...

  4. html+css第八篇滑动门和可爱的css精灵

    滑动门: 滑动门并不是一项全新的技术,它是利用背景图像的可层叠性,并允许他们在彼此之上进行滑动,以创造一些特殊的效果. CSS精灵 CSS Sprites在国内很多人叫CSS精灵,是一种网页图片应用处 ...

  5. 『学了就忘』Linux文件系统管理 — 59、使用fdisk命令进行手工分区

    目录 1.手工分区前提 (1)要有一块新的硬盘 (2)在虚拟机中添加一块新硬盘 2.手工分区 (1)查看Linux系统所有硬盘及分区 (2)手工分区:详细步骤 (3)保存手工分区 3.硬盘格式化 4. ...

  6. W10: Warning: Changing a readonly file使用vi/vim报错问题解决

    使用vi/vim编辑文件的时候出现W10: Warning: Changing a readonly file报错 解决方法: 一.强制保存退出 :wq! 二.ll 查询文件属主,使用属主赋予权限 c ...

  7. Excel-同个工作簿中,多个工作表中有格式一致的表格,做汇总透视合并信息

    12.同个工作簿中,多个工作表中有格式一致的表格,做汇总透视合并信息 在工作簿中新建一个工作表-汇总表->按Alt+D+P调出数据透视表和数据透视图向导->选择"多重合并计算数据 ...

  8. Matlab | 绘制动态曲线(使用 animatedline 对象)

    效果如下: 示例代码: figure('Color','w'); h1 = animatedline; h1.Color = 'r'; h1.LineWidth = 1.0; h1.LineStyle ...

  9. k8s集群中部署Rook-Ceph高可用集群

    先决条件 为确保您有一个准备就绪的 Kubernetes 集群Rook,您可以按照这些说明进行操作. 为了配置 Ceph 存储集群,至少需要以下本地存储选项之一: 原始设备(无分区或格式化文件系统) ...

  10. JavaScript 链表

    ------------恢复内容开始------------ 背景 数组并不总是组织数据的最佳数据结构,原因如下.在很多编程语言中,数组的长度是固定的,所以当数组已被数据填满时,再要加入新的元素就会非 ...