TFS/Azure DevOps 上的发布工件的位置在哪里

Posted

技术标签:

【中文标题】TFS/Azure DevOps 上的发布工件的位置在哪里【英文标题】:Where is the location of Release Artifacts on TFS/Azure DevOps 【发布时间】:2022-01-02 05:27:03 【问题描述】:

当您在发布定义中使用发布工件时,谁能告诉我它来自哪里?

我目前正在使用本地 TFS(v15 更新 1)来处理构建和发布。我相信这个版本非常接近当前 Azure DevOps 文档所描述的“经典”。

我有一个构建定义,它使用 Build.ArtifactStagingDirectory 将工件输出到代理上的默认本地路径 (c:\agent_work\1\a)。我还将工件发布/复制到网络共享。

我有一个发布定义,它将构建定义作为链接的工件源引用。因此,当我创建一个新版本时,版本定义从哪里获得工件?它是从我发布的网络共享中获得的吗?它是从源代码管理中获得的吗?我怎么知道它是从 TFS 或网络共享中获取的?

我知道 Build.ArtifactStagingDirectory 在每次构建时都会被删除,所以我知道它不可能来自那个位置。

【问题讨论】:

你试过$(System.DefaultWorkingDirectory)吗? 虽然我回答了你的具体问题,但我很想知道为什么这与你相关——这些工件的存储机制是有意设计为对用户透明的。 @DanielMann 感谢您提供的信息。问的原因是我正在与一个使用 Release 分支作为 Dev 分支的客户合作。他们无法改变这一点,所以我想知道版本从哪里得到它的工件。如果它从 TFS 获取它们可能会导致问题,因为它们会不断检查更改。根据您的信息,我今天早上进行了一项测试,将一个简单的文本文件放在 Build.ArtifactStagingDirectory 和我的网络共享中。该版本从网络共享中获取了确认您的答案的工件。非常感谢您的帮助。 【参考方案1】:

您将发布定义绑定到构建定义。构建定义可以在运行时发布工件。

您的发布定义查看构建运行,查看它发布的工件,然后从发布它们的任何位置检索它们。此可以是文件共享,也可以位于 TFS/Azure DevOps 实例本身内。不是源代码控制或 Azure Artifacts,而是完全用于构建的内部存储。

现在直接回答您的问题: 你怎么知道神器是从哪里来的?通过查看构建运行。你怎么知道这些工件将来会在哪里发布?通过查看构建定义。

【讨论】:

以上是关于TFS/Azure DevOps 上的发布工件的位置在哪里的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 API 创建跨 TFS 集合的 TFS/Azure DevOps 工作项查询并将其导出到 Wor/Excel/Outlook 等

Azure DevOps:将 Maven 工件从 Azure 工件导入发布时出错

如何使用针对不同分支的多个工件在 DevOps 的单个阶段上运行?

将构建工件发布到远程 Git 存储库 - Azure DevOps

Azure Devops:管道生成新工件时继续部署不会触发

请参阅使用 YAML 管道在 Azure DevOps 中构建工件