从teamcity构建中获取工件列表,并仅下载完整的工件

时间:2017-04-06 12:05:15

标签: perl rest teamcity

我很难从lastsuccessful teamcity build中只下载一个工件。

Ofc,我可以下载所有工件,然后在我的存储上找到一个工件 http://teamcity/repository/downloadAll/buildTypeId/.lastSuccessful/ 但这是浪费时间和流量的巨大浪费。

如何获取lastSuccessful版本中的工件列表? 如果我能够获得列表,那么我将能够形成下载请求并仅获得我需要的工件。

即。我的构建有:

  • SetupSoft..buildId.zip
  • Libs..buildId.zip
  • Binaries..buildId.zip

假设我只需要来自该构建的Binaries.zip,所以如果我要找到工件列表,我会选择使用正则表达式(或其他)的二进制文件,然后像这样创建下载链接:

http://teamcity/repository/download/#buildTypeId#/#buildId#/binaries< ..>的.zip

我该怎么做?

2 个答案:

答案 0 :(得分:3)

TeamCity有api。用它。 文物清单:

http://teamcity:8008/httpAuth/app/rest/builds/id:75105/artifacts

在我的情况下,我在工件目录中有几个文件夹,选择一个,获取文件列表:

http://teamcity:8008/httpAuth/app/rest/builds/id:75105/artifacts/children/Scripts

看起来像:

<files count="1">
<file name="000-201704070732-000000-00000-0160609.07.Build-0088.01.Schema.sql" size="88340" modificationTime="20170407T074931+0300" href="/httpAuth/app/rest/builds/id:75105/artifacts/metadata/Scripts/000-201704070732-000000-00000-0160609.07.Build-0088.01.Schema.sql">
<content href="/httpAuth/app/rest/builds/id:75105/artifacts/content/Scripts/000-201704070732-000000-00000-0160609.07.Build-0088.01.Schema.sql"/>
</file>
</files>

然后做GET:

http://teamcity:8008/httpAuth/app/rest/builds/id:75105/artifacts/content/Scripts/000-201704070732-000000-00000-0160609.07.Build-0088.01.Schema.sql

你只需要你需要的档案,就是这样。 :)

答案 1 :(得分:-1)

我想我找到了解决方案。 以下是可能的定位器列表:

Supported dimensions are: [id, taskId, project, affectedProject, buildType, branch, 
agent, user, personal,  state, tag, property, compatibleAgent, number, status, canceled, 
pinned, queuedDate, startDate, finishDate, sinceBuild, sinceDate, untilBuild,   untilDate, 
failedToStart, snapshotDependency, 
artifactDependency, hanging, history, defaultFilter, $singleValue, start, lookupLimit]

使用其中的几个指定url可以提供一个arifacts列表,即: http://teamcity/app/rest/builds/buildType:xxxx,state:finished/artifacts/