从package.json版本值设置Jenkins构建名称

时间:2017-03-27 20:41:02

标签: json jenkins

我想在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'

3 个答案:

答案 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"
}

忽略错误处理等。