GIT存储库中有两个文件(abc.toml和JenkinsFile)... abc.toml看起来像:
[env]
APPLICATION = 'xxx'
COMPONENT = 'xxx'
Z_VERSION='0.0.1'
AAAS_FLA='xxx'
CONF_VERSION='0.0.80'
SVC_VERSION='0.0.93'
现在,在JenkinsFile中,我必须在变量中提取SVC_VERSION的值。
我正在尝试:
node{
stage('Deploy'){
def SVC_VERSION = sh returnStdout: true, script: cat abc.toml | grep SVC_VERSION|sed -e "s/.*=//g" -e "s/['| ]//g"
}
}
但是我遇到一个错误:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 16: expecting '}', found '|' @ line 16, column 71.
rue, script: cat abc.toml | grep SVC
^
我该如何纠正? 预期结果是SVC_VERSION变量应为0.0.93
答案 0 :(得分:0)
这很好:
def SVC_VERSION = sh returnStdout: true, script: "cat ./abc.toml | grep SVC_VERSION | sed -e \"s/.*=//g\" -e \"s/['| ]//g\" "
答案 1 :(得分:0)
这里是awk
版本,该版本是恕我直言的示例:
def SVC_VERSION = sh returnStdout: true, script: "awk -F\' '/SVC_VERSION/ {print $2}' ./abc.toml"
答案 2 :(得分:0)
作为标准过程,我使用.properties文件存储环境变量。 您的文件将显示为- envt.properties:
APPLICATION =xxx
COMPONENT =xxx
Z_VERSION=0.0.1
AAAS_FLA=xxx
CONF_VERSION=0.0.80
SVC_VERSION=0.0.93
我使用以下常规代码来检索任何属性值:
def prop= new Properties()
new File("envt.properties").withInputStream {
stream -> prop.load(stream)
}
def propConfig = new ConfigSlurper().parse(prop)
def SVC_VERSION=propConfig.SVC_VERSION
def CONF_VERSION=propConfig.CONF_VERSION
希望这会有所帮助。
答案 3 :(得分:0)
建议您不要使用bash命令,而应使用常规代码, 使用readFile方法读取文件,然后循环执行各行,并针对每行将键与值分开。
答案 4 :(得分:0)
最简单的方法可能是使用内置函数,如@yorammi所述:
例如,您可以这样做:
node{
stage('Deploy'){
def props = readProperties file: 'abc.toml'
def SVC_VERSION = props['SVC_VERSION']
echo "SVC_VERSION = ${SVC_VERSION}"
}
}
优点是您可以从节点工作区读取文件。