将文件从 Artifactory 下载到 Teamcity 而不保留完整路径
Download files from Artifactory to Teamcity without retaining their full path
我正在使用
- TeamCity 企业版 2017.1.2(内部版本 46812)
- Artifactory Professional 5.3.1 版本 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 的整个路径附加在目标目录之后。如何告诉插件只使用文件的相对路径 after 指定的根目录?我试过摆弄通配符、斜杠等,但没有任何帮助。
我不得不创建一个额外的构建步骤,在该步骤中我手动将文件移动到我期望的结构,但我不想这样做。
有效答案:
{
"files": [
{
"pattern": "MyRepo/RootFolder/ProjectFolder/1.2.3/(*)",
"target": "artifacts/{1}",
"flat": "true"
}
]
}
您可以按照 here 所述在文件规范中使用占位符来自定义目标结构。
占位符允许您捕获文件规范 "pattern" 属性 值的特定部分,并在 "target" 属性 值中使用它。
对于您的情况,下载文件规范应如下所示:
{
"files": [
{
"pattern": "MyRepo/RootFolder/ProjectFolder/1.2.3/(*)",
"target": "artifacts/{1}"
}
]
}
我正在使用
- TeamCity 企业版 2017.1.2(内部版本 46812)
- Artifactory Professional 5.3.1 版本 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 的整个路径附加在目标目录之后。如何告诉插件只使用文件的相对路径 after 指定的根目录?我试过摆弄通配符、斜杠等,但没有任何帮助。
我不得不创建一个额外的构建步骤,在该步骤中我手动将文件移动到我期望的结构,但我不想这样做。
有效答案:
{
"files": [
{
"pattern": "MyRepo/RootFolder/ProjectFolder/1.2.3/(*)",
"target": "artifacts/{1}",
"flat": "true"
}
]
}
您可以按照 here 所述在文件规范中使用占位符来自定义目标结构。 占位符允许您捕获文件规范 "pattern" 属性 值的特定部分,并在 "target" 属性 值中使用它。
对于您的情况,下载文件规范应如下所示:
{
"files": [
{
"pattern": "MyRepo/RootFolder/ProjectFolder/1.2.3/(*)",
"target": "artifacts/{1}"
}
]
}