洞察探索如何通过一套代码实现跨平台小程序开发与高效管理,助力企业数字化转型
1422
2022-11-30
Jenkins 流水线语法 03 全局变量
流水线中变量定义引用
变量的类型:两种类型的变量。
Jenkins系统内置变量 (全局变量)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内置的全局变量清单。
在调试的时候,需要获取项目的信息,这个时候在全局变量参考里面就能找到可以使用的变量
比如env变量,比如我想获取(有些变量名字是拿不到的,因为没有使用分支管理)
这里打印项目的名称,注意这里两个echo是不一样的,一个是Jenkins里面的echo,一个是shell脚本里面的echo
shell脚本里面要传递变量就可以使用这个,sh "${variable}"
envJOB_NAMEName of the project of this build, such as "foo" or "foo/bar".currentBuildcurrentResulttypically 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 adminRunning in Durability level: MAX_SURVIVABILITY[Pipeline] Start of Pipeline[Pipeline] nodeRunning on Jenkins in /var/jenkins_home/workspace/pipeline-test[Pipeline] {[Pipeline] stage[Pipeline] { (getCode)[Pipeline] sh+ echo shell print variable pipeline-testshell print variable pipeline-test[Pipeline] echopipeline-test[Pipeline] echojenkins buid status SUCCESS[Pipeline] }[Pipeline] // stage[Pipeline] }[Pipeline] // node[Pipeline] End of PipelineFinished: SUCCESS
变量要用双引号,如果使用单引号是打印不出来的
内置变量
BUILD_NUMBER //构建号BUILD_ID //构建号BUILD_DISPLAY_NAME //构建显示名称JOB_NAME //项目名称 EXECUTOR_NUMBER //执行器数量NODE_NAME //构建节点名称WORKSPACE //工作目录JENKINS_HOME //Jenkins homeJENKINS_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变量
result currentResult //构建结果displayName //构建名称 #111description //构建描述duration //持续时间
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~