【问题标题】:TFS - Multiple builds feeding a single releaseTFS - 多个构建提供单个版本
【发布时间】:2018-12-11 10:12:40
【问题描述】:

我有 2 个构建(A 和 B),它们创建自己的工件,这些工件被放入 $(Build.ArtifactStagingDirectory),然后发布到“Visual Studio Team Services/TFS”

构建 A 一切正常,但我发现当我想从构建 B 下载工件时,找不到该工件。当我查看错误消息时,我可以看到 TFS 实际上是从构建 A 中寻找它。

我不想指向版本 B 的特定版本号,而只想指向 B 的最新版本。

任何人都知道我可以如何更新参考,以便 TFS 正在查看构建 B?

如果我使用“下载工件”任务,如果我指向“特定构建”,我可以让它工作,但如果我使用“当前构建”选项,它就不起作用

【问题讨论】:

  • 你是如何设置发布定义的?通常,您只需将多个源(此处的构建定义 A 和 B)链接为工件。
  • 是的,我们已经为发布定义设置了 2 个工件,但我们看到的是发布只引用了一个工件
  • Build B 是否真的发布了一个工件?是否有文件正在上传?
  • 谢谢丹尼尔。是的,两个版本都在发布工件

标签: tfs build artifact


【解决方案1】:

尝试以下步骤来实现:

  1. 创建 2 个构建定义以对构建 A 和 B 进行排队:

    构建定义 A -- 构建 A

    构建定义 B -- 构建 B

  2. 创建发布定义,添加 Build Definition ABuild Definition B 作为工件源。

  3. 触发释放


Release 适用于多个工件:


更新1:

Download Artifact 任务仅适用于单个工件,多个工件不起作用。

此外,为什么你必须使用Download Artifact 任务?默认情况下,发布定义已启用Download Artifact,这意味着它会自动下载多个工件,然后您只需在其他任务中直接使用多个工件即可。


更新 2:

由于您已经在发布定义中链接了多个工件,这意味着您必须下载它们才能在后续阶段/任务中使用。但是根据您的描述,您似乎想使用Download Artifact 任务来下载其中一个的最新版本。这似乎与您的要求有点矛盾。

我能想到的是,您可以将工件下载到暂存文件夹,然后添加复制任务以复制您在阶段中需要的工件。

如果你想下载所有最新的工件,你可以试试这个扩展:Download Artifacts

【讨论】:

  • 谢谢。我们已经将构建链接到管道中的版本,但是在尝试下载工件(从构建 B)时出现以下错误:“构建 5149 未找到工件放置”但构建 5149 实际上是针对定义 A跨度>
  • @Richard.Gale 只是为了排除故障,请尝试从 Artifact 源中删除构建定义 A,仅在您的发布定义中继续链接构建 B,然后检查是否适用于构建 B。您也可以尝试将构建定义 B 标记为主要,然后检查会发生什么。
  • 我们刚刚尝试将 Build Definition B 更新为 Primary,现在所有其他 Artifact 下载(正在寻找定义 A)正在失败,因为他们正在查看定义 B。(即 Artifact ConfigurationScripts not found for build 13294) 构建 13294 是定义 B
  • @Richard.Gale 你能分享一下你的发布定义的配置吗?无法重现您的问题,一切正常。
  • 我添加了一张图片来显示触发新版本时引用的工件。我们的版本不会触发构建,我们可以仅在发生变化时触发构建。
猜你喜欢
  • 2017-10-03
  • 2014-07-18
  • 2016-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-09
  • 1970-01-01
  • 2020-08-29
相关资源
最近更新 更多