【问题标题】:Deserialize variable for promotionConfig为promotionConfig反序列化变量
【发布时间】:2017-12-11 22:55:43
【问题描述】:

我正在尝试将带有 repo 名称的变量 (repoName) 传递给 promotionConfig 参数 targetReposourceRepo 但我在 Jenkins 中收到此错误:

通知构建结果 com.fasterxml.jackson.databind.JsonMappingException:无法从 START_OBJECT 令牌中反序列化 java.lang.String 的实例 [来源:不适用;行:-1,列:-1](通过引用链:org.jfrog.hudson.pipeline.types.PromotionConfig["targetRepo"])

我在promotionConfig里面使用:

...
'targetRepo'         : '${repoName}-release-local',
...
'sourceRepo'         : '${repoName}-snapshot-local',
...

变量 repoName

echo "Repo name is ${repoName}"

输出:repo 名称是 test-repo

有人知道将变量传递给promotionConfig 的正确方法吗?

【问题讨论】:

    标签: jenkins-pipeline artifactory


    【解决方案1】:

    你应该使用双引号在字符串中传递变量。

    def var = "${repoName}".toString()
    ...
    'targetRepo'         : "" + var + "-release-local",   
    ...
    'sourceRepo'         : "" + var + "-snapshot-local",
    ...
    

    【讨论】:

    • 那行不通。错误:com.fasterxml.jackson.databind.JsonMappingException:无法将 java.lang.String 的实例反序列化出 [来源:N/A;行:-1,列:-1](通过引用链:org.jfrog.hudson.pipeline.types.PromotionConfig["targetRepo"])
    • 有趣,我让它像这样工作: def rName = "${repoName}".toString() 'targetRepo' : '' + rName + '-release-local', ... 'sourceRepo ' : '' + rName + '-release-local',看起来很奇怪。这是正确的吗?
    • 是的,它看起来是正确的。 repoName 变量的类型是什么?
    • 这只是我从中得到的一个字符串:token = "${env.JOB_NAME}".tokenize(‘/‘)repoName = token[0]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    • 2015-12-29
    • 2012-10-31
    • 2011-05-13
    • 1970-01-01
    相关资源
    最近更新 更多