0
点赞
收藏
分享

微信扫一扫

Jenkins 流水线语法 03 全局变量


Jenkins 流水线语法 03 全局变量_局部变量

流水线中变量定义引用

变量的类型:两种类型的变量。

  1. Jenkins系统内置变量 (全局变量)
  2. Pipeline中定义变量(全局/局部变量)

Jenkins系统内置变量:

是Jenkins系统在安装部署后预先定义好的变量。这些变量可以通过Jenkins流水线语法页面看到具体有哪些。这些变量都是全局的可以使用"${env.变量名}引用。

Pipeline中的变量:

首先你要先理解pipeline可以用groovy语法来编写,而groovy是一门编程语言。所有的编程语言也都有各自的变量定义方式。 这就容易让大家产生疑惑的地方,pipeline中可以有很多种写法。

def name = "devops"
String name = "devops"

以上这两种写法是一样,def可以自动推导出变量类型,而String这种写法是精确这个变量是一个字符串类型的(string是强类型,定死了变量类型)。

如果你在Jenkins图形界面设置了参数化构建,那么这些参数也都变成了Jenkins全局变量,可以使用与Jenkins内置变量相同的引用方式。

如果在某个stage定义的变量默认是局部变量,在后续的stage中可能语法引用,所以如果需要引用最好定义为全局变量。

全局变量的定义方式:

env.name = "devops"

引用方式: "${env.name}"

总之变量是我们在编写Jenkins流水线是经常用到的。无处不在。如果你要定义全局的变量就用env.变量名的方式定义。

全局变量 

 这些是已经安装的Jenkins插件和Jenkins内置的全局变量清单。

在调试的时候,需要获取项目的信息,这个时候在全局变量参考里面就能找到可以使用的变量

Jenkins 流水线语法 03 全局变量_局部变量_02

比如env变量,比如我想获取(有些变量名字是拿不到的,因为没有使用分支管理

这里打印项目的名称,注意这里两个echo是不一样的,一个是Jenkins里面的echo,一个是shell脚本里面的echo

shell脚本里面要传递变量就可以使用这个,sh "${variable}"

env

JOB_NAME
Name of the project of this build, such as "foo" or "foo/bar".


currentBuild

currentResult
typically SUCCESS, UNSTABLE, or FAILURE. Will never be null.

pipeline {
agent any

stages {
stage('getCode') {
steps {
sh "echo shell print variable ${env.JOB_NAME}"
echo "${env.JOB_NAME}"
echo "jenkins buid status ${currentBuild.currentResult}"
}
}
}
}


Started by user admin
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /var/jenkins_home/workspace/pipeline-test
[Pipeline] {
[Pipeline] stage
[Pipeline] { (getCode)
[Pipeline] sh
+ echo shell print variable pipeline-test
shell print variable pipeline-test
[Pipeline] echo
pipeline-test
[Pipeline] echo
jenkins buid status SUCCESS
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

 变量要用双引号,如果使用单引号是打印不出来的

内置变量

BUILD_NUMBER          //构建号
BUILD_ID //构建号
BUILD_DISPLAY_NAME //构建显示名称
JOB_NAME //项目名称

EXECUTOR_NUMBER //执行器数量
NODE_NAME //构建节点名称
WORKSPACE //工作目录
JENKINS_HOME //Jenkins home
JENKINS_URL //Jenkins地址
BUILD_URL //构建地址
JOB_URL //项目地址

println(env)

env.branchName = "develop"
env.commitID = "${UUID.randomUUID().toString()}"
env.commitID = "${env.commitID.split("-")[0]}"
currentBuild.displayName = "#${env.branchName}-${env.commitID}"
currentBuild.description = "Trigger by user jenkins \n branch: master"

pipeline {

agent { label "build"}

stages{
stage("test"){
steps{
script{
echo "${BUILD_NUMBER}"
echo "${BUILD_ID}"
//currentBuild.displayName = "#${env.branchName}-${env.commitID}"
//currentBuild.description = "Trigger by user jenkins \n branch: master"


echo "当前下载代码分支为: ${env.branchName}"
}
}
}
}
}

currentbuild变量

Jenkins 流水线语法 03 全局变量_变量名_03

result  currentResult   //构建结果
displayName //构建名称 #111
description //构建描述
duration //持续时间

Jenkins 流水线语法 03 全局变量_变量名_04

举报

相关推荐

0 条评论