在生成过程模板中的代理范围期间获取 TFS 生成代理 ID



我正在构建一个包含许多 Web 应用程序项目的代码库,我们在构建期间为我们的构建存储生成 webdeploy 包。

由于 NTFS 中 260 个字符长度的路径限制,由于 webdeploy 在用于构建包的目录中生成了重复的文件夹结构,我的构建失败了,这有效地使路径中用于文件夹的字符数翻了一番。对于包含项目名称和生成标签的生成工作区,这可能会很长。

为了解决第一个问题,我使用 _PackageTempDir=C:\TfsTmp\Pkg\ 重定向了软件包构建目录,这要归功于我的个人英雄 Sayed Ibrahim Hashimi 的提示。这工作得很好,构建现在成功完成。但是,这将我们限制为每个生成代理一个生成,因为所有代理都会尝试使用相同的硬编码路径。

为了解决这个问题,我想使用用于定义构建代理工作区的 $(BuildAgentId( 变量,但我不知道如何在构建过程模板中取消引用此变量。当我尝试时,我只是在我的构建服务器上出现文件夹结构,如 C:\TfsTmp[$(BuildAgentId(]\Pkg,或 C:\TfsTmp\$(BuildAgentId(\Pkg,或类似。

这个变量不能从BPT内部访问吗?有没有更好的方法来区分这些文件夹?有没有更好的方法来解决我在构建 webdeploy 包时的原始问题?

一旦在

"代理上运行"范围内,就可以访问生成代理信息。看看IBuildAgent和IBuildDetail,了解一下。

您也许能够从代理的 URI 中获取代理 ID。我还没有测试过这个,但这是一个开始。

String agentId = LinkingUtilities.DecodeUri(buildAgent.Uri.AbsoluteUri).ToolSpecificId;

最新更新