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
6条答案
按热度按时间2eafrhcq1#
最简单的可能是使用内置的插件,如@yorammi提到的:
参见https://jenkins.io/doc/pipeline/steps/pipeline-utility-steps/#readproperties-read-properties-from-files-in-the-workspace-or-text
例如,您可以执行以下操作:
优点是您可以从节点工作区读取文件。
dtcbnfnu2#
这是一个很好的工作:
7z5jn7bk3#
下面是
awk
版本,这是IMHO示例阅读:nszi6y054#
作为一个标准过程,我使用.properties文件来存储环境变量。您的文件将显示为-envt.properties:
我使用以下groovy代码来检索任何属性值:
希望这能帮上忙。
ogq8wdun5#
我建议您不要使用bash命令,而是使用groovy代码,使用readFile方法读取文件,然后循环行,并为每行将键与值分开。
vkc1a9a26#
对于那些正在使用Jenkins共享库的人,这是我如何在**TomlSlurper**和Grape的帮助下做到这一点的,Grape是一个嵌入到Groovy中的JAR依赖管理器。