【问题标题】:How to get artifacts from tfs build server如何从 tfs 构建服务器获取工件
【发布时间】:2018-04-16 14:55:03
【问题描述】:

我在内部使用 TFS 2017(15.117) 和构建和发布定义。 我的构建将构建结果(zip 包)推送到构建服务器上的 artifactstaging 目录。

在我的发布定义中,我有 2 个任务(管理 IIS 和部署 IIS),我想利用构建服务器上的 artifactstaging 目录来引用 zip 包,但我不知道如何使用变量来执行此操作...

如何使用构建定义也使用的相同代理池和队列来完成此操作?

【问题讨论】:

  • 看看这个helps
  • 您似乎遇到了与github.com/Microsoft/vsts-tasks/issues/4152 类似的错误?
  • 问题是 TFS 中的 WinRM 部署 IIS 应用程序任务提示 .zip Web 部署包文件应位于目标计算机上的文件共享或 UNC 路径上。因为工件下载是在构建服务器上,所以路径不适用于应用服务器...我正在尝试将 web 部署包作为文件复制任务复制到应用服务器上的共享
  • @PatrickPeters 如果是这样,您可以尝试使用Deploy: Windows Machine File Copy,它可以将构建服务器的放置文件夹中的 .zip 包复制到应用服务器。关于变量,请查看:Build.ArtifactStagingDirectory 代理上的本地路径,任何工件在被推送到目的地之前都会复制到该路径。 : c:\agent\_work\1\a

标签: tfs tfsbuild


【解决方案1】:

您必须使用Publish Artifact 任务。查看示例的内置模板之一。

使用该任务会自动将指定的二进制文件推送到您指定的位置(UNC 共享或 TFS 实例本身)。然后它针对构建结果创建一个 Artifact 链接,因此当您对构建的发布进行排队时,该发布可以自动检索与构建关联的工件。

【讨论】:

  • 构建服务器上的代理用于下载工件,但发布失败,因为我收到错误'Microsoft.Powershell.Commands.WriteErrorException:在一台或多台机器上部署失败。 System.Exception:[...path\..zip] 不存在。但是当我去构建服务器并在 Windows 资源管理器中粘贴该路径时,我得到了 zip 文件的内容,所以该文件确实存在......那可能有什么问题?
【解决方案2】:

您不需要在发布中使用额外的变量来获取构建工件。在您的发布定义设置中,有一部分 Artifact sources。 TFS 会自动将它们下载到代理。

您可以将发布定义链接到 Team Foundation Server 项目集合中的任何构建定义

默认情况下,根据发布定义创建的发布将使用 工件的最新版本。

在将工件源链接到发布定义时,您 可以通过选择其中一个选项来更改此行为以使用 通过指定标签,特定分支的最新构建 版本,或允许用户在发布时指定版本 根据定义创建。

注意:您必须在构建定义中包含Publish Artifacts 任务步骤。

更多细节,建议你先看一下MSDN官方教程:Artifacts in Release Management

【讨论】:

  • 链接工件仅在发布期间下载到给定代理。我重复使用与构建相同的代理,因此所有工件都下载到构建服务器...... IIS 部署任务要求将 Web 部署包下载到共享或本地路径(= 在这种情况下构建服务器)。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-25
  • 1970-01-01
  • 2013-04-12
  • 2014-04-01
  • 1970-01-01
相关资源
最近更新 更多