使用 tfs.visualstudio.com 上的托管 Team Foundation 服务,可以在构建定义中选择“将构建输出复制到服务器”,这会创建放置文件夹的 zip,可以通过团队网站通过 https 下载使用权。我真的需要自动下载这个 drop,这样我就可以将输入链接到构建管道的下一阶段。
不幸的是,放置 URL 并不明显,但可以使用 TfsDropDownloader 创建.
TL;DR - 我无法让 TfsDropDownloader 工作,我希望其他人已经使用这个工具或类似的方法从 https://tfs.visualstudio.com 成功下载了一个 drop。
使用命令行 TfsDropDownloader.exe 我可以这样做:
TfsDropDownloader.exe /c:"https://MYPROJECTNAME.visualstudio.com/DefaultCollection" /t:"ProjectName" /b:"BuildDefinitionName" /u:username /p:password
...并获得一个空的 zip 文件,其中包含上次成功构建的正确构建标签名称,例如BuildDefinitionName_20130611.1.zip
在调试器中运行源代码,这是因为生成的用于下载的URL:
https://tflonline.visualstudio.com/DefaultCollection/_apis/resources/containers/804/drop/BuildDefinitionName_20130611.1.zip
..返回不支持的application/json 内容类型。此异常被应用程序吞没,但在创建空 zip 文件之前不会。
Team Foundation Service 上的 REST API 是否可能以某种方式发生了变化,因此生成的 URL 不再正确?
请注意,我使用的是在我的 Team Foundation Service 帐户上定义的“备用凭据”(即不是我的实时 ID)- 使用其他任何东西都会让我得到 TF30063:未授权。
最佳答案
我通过使用备用凭据让它工作,但我还必须通过不同的路径访问 REST API。
当前TfsDropDownloader构建一个如下所示的 URL:
https://project.visualstudio.com/DefaultCollection/_apis/resources/containers/804/drop/BuildDefinitionName_20130611.1.zip
每当我尝试使用它时,它都会返回空的 JSON。我绝对是通过身份验证的,因为如果我将 URL 调整为:
https://project.visualstudio.com/DefaultCollection/_apis/resources/containers/804/drop
我得到了 drop 中每个文件的一个很好的 JSON 列表,但没有 zip。
从监视 SSL 流量到 https://tfs.visualstudio.com使用 Fiddler,我看到单击“下载 zip 格式”链接我可以看到还有另一个端点:
https://project.visualstudio.com/DefaultCollection/ProjectName/_api/_build/ItemContent?buildUri=vstfs%3a%2f%2f%2fBuild%2fBuild%2f639&path=%2Fdrop
...这确实给了你一个 zipper 。 “vstfs%3a%2f%2f%2fBuild%2fBuild%2f639”部分是 URL 编码的 BuildUri。
所以我更改了 TfsDropDownloader 源中的 GetServerPath 版本来执行此操作:
private static string GetServerPath(TfsConnection collection, IBuildDetail buildDetail)
{
var downloadPath = string.Format("{0}{1}/_api/_build/ItemContent?buildUri={2}&path=%2Fdrop",
collection.Uri,
HttpUtility.UrlPathEncode(buildDetail.TeamProject),
HttpUtility.UrlEncode(buildDetail.Uri.ToString()));
return downloadPath;
}
这暂时对我有用。希望这可以帮助遇到同样问题的其他人!
关于continuous-integration - 从托管的 Team Foundation Service 下载构建 drop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17062581/