使用Team City中的REST下载工件

时间:2017-07-24 11:12:05

标签: rest powershell teamcity powershell-v4.0

使用Team City 2017.1.1(build 46654)我试图在Windows 10上使用来自Powershell的REST下载工件。

我正在使用这个: https://confluence.jetbrains.com/display/TCD10/REST+API#RESTAPI-BuildArtifacts

但我仍然无法让它发挥作用。作为一个例子,我正在尝试下载我可以使用我的浏览器从以下URL访问的info.txt工件:

http://mytc/repository/download/MyBuildConfiguration/294859:id/output/logs/info.txt

基于: https://confluence.jetbrains.com/display/TCD10/REST+API#RESTAPI-BuildArtifacts

我正在从Powershell做以下事情:

$TeamCityUser = 'tcuser'
$TeamCityPassword = 'tcpass'
$securePassword = ConvertTo-SecureString $TeamCityPassword -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential($TeamCityUser, $securePassword)

$response = Invoke-WebRequest http://mytc/httpAuth/app/rest/builds/294859:id/artifacts/output/logs/info.txt -Credential $creds

但我收到错误:

Invoke-WebRequest : The remote server returned an error: (400) Bad Request.

基于以下建议,我现在尝试过:

$response = Invoke-WebRequest http://mytc/httpAuth/app/rest/builds/id:294859/artifacts/output/logs/info.txt -Credential $creds

但仍然得到:

Invoke-WebRequest : The remote server returned an error: (404) Not Found.

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您可以递归地导航给定构建的工件:

http://mytc/httpAuth/app/rest/builds/id:294859/artifacts/ 并使用响应的节点:import ^package_name^ from ^package_name^ import ^some_function_or_class^

回应可能是:

children

然后,在<files count="1"> <file name="output" modificationTime="20170724T160034+0200" href="/httpAuth/app/rest/builds/id:294859/artifacts/metadata/output"> <children href="/httpAuth/app/rest/builds/id:294859/artifacts/children/output"/> </file> </files> 上发出相同的请求,您可能会有另一个孩子。 (即:日志) 当您到达所需的叶项目而不是子节点时,您将拥有一个内容节点,其中包含您要调用的href。

children.href

递归地使用响应将确保人工制品的路径正确,以及案例。并将确保人工制品仍然可用。

答案 1 :(得分:0)

根据文档,您需要更改ID格式并在URL中添加/ content /,替换

  

article

  

answer