Jenkins-pipeline 从 groovy 中的属性文件中提取和设置变量
Posted
技术标签:
【中文标题】Jenkins-pipeline 从 groovy 中的属性文件中提取和设置变量【英文标题】:Jenkins-pipeline Extract and Set variables from properties file in groovy 【发布时间】:2016-12-21 15:34:24 【问题描述】:首先,我将管道完全编写为 groovy,以便签入到 git。请不要提供任何 gui 必要的解决方案。我的问题陈述是:
从文件中提取变量并将其设置为 groovy 对象。
我试过的
def SERVICE_MAJOR_VERSION
node
runGitClone(GIT_REPO_URL, GIT_HASH)
def conf = readFile("gradle.properties")
echo conf
//THE BELOW COMMENT DOESN'T WORK
//SERVICE_MAJOR_VERSION = loadEnvFromFile("SERVICE_VERSION_MAJOR", "gradle.properties", true, SERVICE_VERSION_MAJOR)
def runGitClone(git_repo_url, git_hash)
checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: git_hash]], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'WipeWorkspace']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '85572032-4284-4095-9eec-4df70ddfdb68', url: git_repo_url]]]
def loadEnvFromFile(string_name, file_path, should_print_load)
def par1 = null
def content = readFile file_path
def matcher = content =~ /$string_name\=(.+)/
if (matcher)
par1 = string_name + "='" + matcher[0][1] + "'"
new GroovyShell(this.binding).evaluate(par1)
if (should_print_load)
println par1
return par1
我尝试了其他建议无济于事。特别是以下两个。
Get values from properties file using Groovy Parsing string as properties如果您有一个从文件中提取变量并将其设置为 groovy 对象的工作示例,它将解决我的问题。
【问题讨论】:
【参考方案1】:已解决:
def content = readFile 'gradle.properties'
Properties properties = new Properties()
InputStream is = new ByteArrayInputStream(content.getBytes());
properties.load(is)
def runtimeString = 'SERVICE_VERSION_MINOR'
echo properties."$runtimeString"
SERVICE_VERSION_MINOR = properties."$runtimeString"
echo SERVICE_VERSION_MINOR
【讨论】:
以上是关于Jenkins-pipeline 从 groovy 中的属性文件中提取和设置变量的主要内容,如果未能解决你的问题,请参考以下文章