将文件从Artifactory下载到Teamcity,而不保留其完整路径
我正在使用将文件从Artifactory下载到Teamcity,而不保留其完整路径,teamcity,artifactory,Teamcity,Artifactory,我正在使用 TeamCity Enterprise 2017.1.2(构建46812) Artifactory Professional 5.3.1修订版50046 Teamcity安装了Artifactory插件(2.3.0版) 任务很简单-将文件从Artifactory下载到Teamcity build: 从ArtifactoryMyRepo/RootFolder/ProjectFolder/1.2.3/ 到TC%checkoutdir%/artifacts/ 路径的部分包含文件夹和
- TeamCity Enterprise 2017.1.2(构建46812)
- Artifactory Professional 5.3.1修订版50046
- Teamcity安装了Artifactory插件(2.3.0版)
- 从Artifactory
MyRepo/RootFolder/ProjectFolder/1.2.3/
- 到TC
%checkoutdir%/artifacts/
部分包含文件夹和文件,我希望保留它们的结构
下载规范json为:
{
"files": [
{
"pattern": "MyRepo/RootFolder/ProjectFolder/1.2.3/",
"target": "artifacts/"
}
]
}
但是,文件下载到的位置与我预期的不同:
- 实际:
artifacts/RootFolder/ProjectFolder/1.2.3/
- 预期:
artifacts/
工作答案:
{
"files": [
{
"pattern": "MyRepo/RootFolder/ProjectFolder/1.2.3/(*)",
"target": "artifacts/{1}",
"flat": "true"
}
]
}
您可以使用文件规范中的占位符自定义目标结构,如所述。 占位符允许您捕获文件规范“模式”属性值的特定部分,并在“目标”属性值中使用它 在您的情况下,下载文件规范应如下所示:
{
"files": [
{
"pattern": "MyRepo/RootFolder/ProjectFolder/1.2.3/(*)",
"target": "artifacts/{1}"
}
]
}
我以前尝试过这个方法,但没有达到预期效果——假设我在
util
中有一个文件夹。您的文件规范在下载时创建了此结构:artifacts/util/RootFolder/ProjectFolder/1.2.3/util/
-它只需将整个目录树放在(*)匹配的文件夹中。更不用说这对文件没有任何不同。我明白了。因此,如果我理解正确,您希望在artifacts目录下对文件进行平面布局。我认为将“flat”:“true”属性添加到原始文件规范中应该会对您有所帮助。感谢您为我指明了正确的方向。我以前尝试过使用flat
,但是没有(*),{1}
占位符。两者结合使用会产生我想要的结果。