我想在package.json中包含“version”参数的值,作为Jenkins构建名称的一部分。
我正在使用Jenkins Build Name Setter插件 - https://wiki.jenkins-ci.org/display/JENKINS/Build+Name+Setter+Plugin
到目前为止,我已尝试在“构建名称宏模板”步骤中使用PROPFILE语法:
${PROPFILE,file="./mainline/projectDirectory/package.json",property="\"version\""}
这成功创建了一个构建,但包含了package.json中version属性值的引号和逗号,例如:
"0.0.1",
我只想返回里面的值,所以它读取
0.0.1
我该怎么做?是否有一个不同的插件可以更好地解析package.json并将其放入模板中,或者我应该使用某种正则表达式来删除我不想要的字符?
更新:
我尝试使用令牌转换基于读取令牌宏插件文档,但它不起作用:
${PROPFILE%\"\,#\",file="./mainline/projectDirectory/package.json",property="\"version\""}
仍然只是返回
但是,只使用一个转义字符,只有#或%中的一个有用。没有其他组合我尝试过工作。
${PROPFILE%\,,file="./mainline/projectDirectory/package.json",property="\"version\""}
返回"0.0.1"
(删除逗号)
${PROPFILE#\"%\"\,,file="./mainline/projectDirectory/package.json",property="\"version\""}
返回"0.0.1",
(未删除任何字符)
更新 试图使用新的Jenkins Token Macro插件的JSON宏而没有运气。
Jenkins Build Name Setter设置为使用Macro更新构建名称:
${JSON,file="./mainline/pathToFiles/package.json",path="version"}-${P4_CHANGELIST}
Jenkins为此职位展示构建日志:
10:57:55 Evaluated macro: 'Error processing tokens: Error while parsing action 'Text/ZeroOrMore/FirstOf/Token/DelimitedToken/DelimitedToken_Action3' at input position (line 1, pos 74):
10:57:55 ${JSON,file="./mainline/pathToFiles/package.json",path="version"}-334319
10:57:55 ^
10:57:55
10:57:55 java.io.IOException: Unable to serialize org.jenkinsci.plugins.tokenmacro.impl.JsonFileMacro$ReadJSON@2707de37'
答案 0 :(得分:2)
尝试令牌转换#
和%
(请参阅Token-Makro-Plugin):
$ {PROPFILE# “%”,FILE = “./主线/ projectDirectory /的package.json”,属性= “\” 版本\ “”}
答案 1 :(得分:2)
我实现了一个新的宏JSON,它在token-macro-2.1中获取一个文件和一个路径(这是JSON中的键层次结构,用于你想要的值)。每个宏使用只能使用一个转换。
答案 2 :(得分:1)
(这仅在您使用管道时才有用。但是对于它的价值,..)
对我有用的是将Pipeline Utility Steps插件中的readJSON与直接设置currentBuild.displayName结合使用的方式,
script {
// readJSON from "Pipeline Utility Steps"
def packageJson = readJSON file: 'package.json'
def version = packageJson.version
echo "Setting build version: ${packageJson.version}"
currentBuild.displayName = env.BUILD_NUMBER + " - " + packageJson.version
// currentBuild.description = "other cool stuff"
}
忽略错误处理等。