编辑
2023-08-31
DevOps
00
请注意,本文编写于 384 天前,最后修改于 384 天前,其中某些信息可能已经过时。

在Jenkins pipeline中可以通过parameters添加动态变量,但是呢,在访问这些变量的时候就要注意了,变量名前添加"params."前缀和不添加前缀是不一样的。

具体来看,我们先使用parameters添加一个名为BUILE_TYPE的变量:

jenkins
pipeline { agent any parameters { choice(name: 'BUILD_TYPE', description: 'Choose Build Types', choices: ['Debug', 'Release']) } }

这样,在Jenkins构建页面的构建参数中就会出现BUILD_TYPE选项,它包括Debug和Release两个可选项:

image.png

假设我在构建参数中选择Debug值,那么在pipeline文件中,后续就可以通过params.BUILD_TYPE变量获取选择的值。

然而,直接访问BUILD_TYPE变量也可以拿到选择的值,比如:

jenkins
pipeline { agent any parameters { choice(name: 'BUILD_TYPE', description: 'Choose Build Types', choices: ['Debug', 'Release']) } stages { stage('Prepare') { steps { script { println "BUILD_TYPE: ${BUILD_TYPE}" } } } } }

如果我在构建参数中选择了Debug选项,这里就会输出“BUILD_TYPE: Debug”。

看起来,Jenkins在构建的时候,通过BUILD_TYPE变量一样可以访问到选中的值。那么,params.BUILD_TYPE变量和BUILD_TYPE变量之间到底有什么区别呢?

  • params.BUILD_TYPE:Jenkins从parameters代码块中获取的变量都会记录到params对象中。在这个例子中,params.BUILD_TYPE是其中一个变量。
  • BUILD_TYPE:这是一个Jenkins环境变量,Jenkins在处理parameters代码块的时候,除了把键值对记录到params对象中之外,还会额外创建同名的环境变量。所以这里的BUILD_TYPE环境变量与params.BUILD_TYPE变量的值相同,但它们实际上并不是同个变量。

我们可以修改下pipeline验证一下:

jenkins
pipeline { agent any parameters { choice(name: 'BUILD_TYPE', description: 'Choose Build Types', choices: ['Debug', 'Release']) } stages { stage('Prepare') { steps { script { println "BUILD_TYPE: ${BUILD_TYPE}" println "params.BUILD_TYPE: ${params.BUILD_TYPE}" BUILD_TYPE = "Release" println "BUILD_TYPE: ${BUILD_TYPE}" println "params.BUILD_TYPE: ${params.BUILD_TYPE}" } } } } }

结果输出:

shell
BUILD_TYPE: Debug params.BUILD_TYPE: Debug BUILD_TYPE: Release params.BUILD_TYPE: Debug

可见,它们并不是同个变量。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Jianan

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 © 2012-2023 Jianan 许可协议。转载请注明出处!