在Jenkins pipeline中可以通过parameters添加动态变量,但是呢,在访问这些变量的时候就要注意了,变量名前添加"params."前缀和不添加前缀是不一样的。
具体来看,我们先使用parameters添加一个名为BUILE_TYPE的变量:
jenkinspipeline { agent any parameters { choice(name: 'BUILD_TYPE', description: 'Choose Build Types', choices: ['Debug', 'Release']) } }
这样,在Jenkins构建页面的构建参数中就会出现BUILD_TYPE选项,它包括Debug和Release两个可选项:
假设我在构建参数中选择Debug值,那么在pipeline文件中,后续就可以通过params.BUILD_TYPE变量获取选择的值。
然而,直接访问BUILD_TYPE变量也可以拿到选择的值,比如:
jenkinspipeline { 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变量之间到底有什么区别呢?
我们可以修改下pipeline验证一下:
jenkinspipeline { 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}" } } } } }
结果输出:
shellBUILD_TYPE: Debug params.BUILD_TYPE: Debug BUILD_TYPE: Release params.BUILD_TYPE: Debug
可见,它们并不是同个变量。
本文作者:Jianan
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 © 2012-2025 Jianan 许可协议。转载请注明出处!