【问题标题】:Jenkins Artifactory uploadSpec replacing variablesJenkins Artifactory uploadSpec 替换变量
【发布时间】:2020-12-05 01:08:50
【问题描述】:

我正在运行一个构建 gradle 项目及其子项目的管道。

由于我想上传上传规范,它只替换了正则表达式占位符,而不是我自己的变量。

Jenkinsfile 工作正常,只是没有上传具有正确名称的工件。

上传规范:

def uploadSpec = '''{\
    "files": [
      {
        "pattern": "(.*)[/]build[/]libs[/].*[.]jar",
        "target": "space/team/dotspace/{1}/${projectVersion}/{1}-${projectVersion}.jar",
        "regexp": "true"
      }
   ]
  }'''

是的,projectVersion 的 def 设置正确,因为我在后面回显 §{projectVersion}

输出:

[consumer_0] Deploying artifact: http://host/artifactory/space/team/dotspace/core-game/%24%7BprojectVersion%7D/core-game-%24%7BprojectVersion%7D.jar
[consumer_1] Deploying artifact: http://host/artifactory/space/team/dotspace/core-profile/%24%7BprojectVersion%7D/core-profile-%24%7BprojectVersion%7D.jar

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: jenkins groovy artifactory


    【解决方案1】:

    当您使用 Jenkins 并参数化项目时,您可以在 Jenkins 可配置脚本中简单地添加这些参数“projectVersion”。请在 Jenkins 参数化构建中参考此 article。 下面的屏幕截图来自我的工作示例,其中我将参数“Credentials”传递给 Job,并将参数“Credentials”传递给 Jenkins 脚本中的变量“CREDENTIALS”,并使用该变量将变量替换为其值。

    【讨论】:

    • 这可行,但我在管道脚本中定义变量如下:def projectVersion = sh(script: "gradle -q getVersion -b build.gradle", returnStdout: true)。我没有期望的默认值
    • 好的,我怀疑这个问题,因为目标路径用双引号 "target": "space/team/dotspace/{1}/${projectVersion}/{1}-${ projectVersion}.jar”,设置不同的变量并执行连接并将其传递给“目标”。像 testvariable="space/team/dotspace/"+"${1}"+"${projectVersion}"+"/${1}-"+"${projectVersion}"+".jar" 之类的东西并传递为“目标”:${testvariable}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    相关资源
    最近更新 更多