从Artifactory下载文件到Teamcity而不保留其完整路径

时间:2017-07-18 10:57:00

标签: teamcity artifactory

我正在使用

  • TeamCity Enterprise 2017.1.2(build 46812)
  • Artifactory Professional 5.3.1 rev 50046
  • Teamcity安装了Artifactory插件(版本2.3.0)

任务很简单 - 将文件从Artifactory下载到Teamcity构建:

  • 来自Artifactory MyRepo/RootFolder/ProjectFolder/1.2.3/<files>
  • 致TC %checkoutdir%/artifacts/<files>

路径的<files>部分包含文件夹和文件,我想保留其结构。

下载规范json是:

{
  "files": [
    {
      "pattern": "MyRepo/RootFolder/ProjectFolder/1.2.3/",
      "target": "artifacts/"
    }
  ]
}

但是,文件会下载到与我预期不同的位置:

  • 实际:artifacts/RootFolder/ProjectFolder/1.2.3/<files>
  • 预期:artifacts/<files>

Artifactory的整个路径被追加到目标目录之后。如何告诉插件仅在指定的根目录后使用文件的相对路径?我试过用通配符,斜线等来摆弄,但没有任何帮助。

我必须创建一个额外的构建步骤,我手动将文件移动到我期望的结构,但我不希望这样做。

工作答案:

{
  "files": [
    {
      "pattern": "MyRepo/RootFolder/ProjectFolder/1.2.3/(*)",
      "target": "artifacts/{1}",
      "flat": "true"
    }
  ]
}

1 个答案:

答案 0 :(得分:0)

您可以按照image所述的文件规范中的占位符自定义目标结构。 占位符允许您捕获文件规范的特定部分&#34;模式&#34;属性值,并在&#34; target&#34;中使用它财产价值。

在您的情况下,下载文件规范应如下所示:

{
  "files": [
    {
      "pattern": "MyRepo/RootFolder/ProjectFolder/1.2.3/(*)",
      "target": "artifacts/{1}"
    }
  ]
}