0

语境:

jenkins 作业的输入参数在属性文件中定义。属性文件位置根据 jenkins 运行的环境而改变

例如:对于开发环境路径就像/app/dev/some/nested/path/propertyfile

对于产品环境路径就像/app/prod/some/nested/path/propertyfile

目前使用扩展选择参数插件来读取属性文件。如果属性文件的路径是绝对的,这很好用。

问题:

有没有办法在属性文件路径中包含全局环境变量?可以使用主动选择插件来完成吗?

4

1 回答 1

0

使用主动选择插件

def choices=[]
textFile= new File("/app/${Gloabl_Var}/some/nested/path/propertyfile")
textFile.eachLine{ line ->
if(line.startsWith('<Property-Key-Name>')) {
 line.split('=')[1].split(',').each {
choices.add(it)
}}}
return choices

使用扩展选择参数插件

不能直接使用属性文件,需要使用groovy脚本

import hudson.slaves.EnvironmentVariablesNodeProperty
import jenkins.model.Jenkins
def global_env_var=Jenkins.get().globalNodeProperties.get(EnvironmentVariablesNodeProperty.class).envVars['<Global_Var>']
def props = new Properties()
def stream = new FileInputStream("/app/${global_env_var}/some/nested/path/propertyfile")
try {
props.load(stream)
} finally {
stream.close()
}
return props.getProperty('<Property-Key-Name>').split(',')

参考:

扩展选择

主动选择

于 2020-07-04T08:47:24.017 回答