【问题标题】:TFSBuild command line tool Get Build completion detailsTFSBuild 命令行工具 获取构建完成详细信息
【发布时间】:2013-06-24 17:49:29
【问题描述】:

问题 我在 TFS 中有一个构建定义(我无法更改)。我正在自动化我们的文件收集过程,在此过程中我需要执行此构建定义,获取放置位置并将这些输出复制到所需位置。

解决方案: 我们已经有一个执行文件复制操作的批处理文件。所以我试图把所有东西都整合进去。 我使用 TFSBuild.exe(命令行工具)开始构建。提供服务器路径、构建定义名称。构建成功完成。

我的问题是我无法获取当前执行的构建定义已将输出附加到放置位置的文件夹的名称(或任何构建完成详细信息)。 我想在构建完成后获取 Drop 文件夹 的值。

(如果有更好/更简单的方法,会有所帮助)

提前致谢。

【问题讨论】:

    标签: tfs tfsbuild build-definition


    【解决方案1】:

    您可以将放置位置指定为使用 TFSBuild.exe 对构建进行排队的一部分。命令行上的“TFSBuild.exe help start”应该可以帮助您。

    附带说明,如果您仍在使用批处理文件将文件从放置位置复制到其他地方进行打包,那么我认为该过程根本不是自动化的。自定义您的构建过程,使用 WIX 打包代码。源代码编译结束后,您可以立即启动 WIX 包,您的构建的最终输出将是用于部署的 MSI!

    【讨论】:

    • AG_85:我知道构建删除输出的共享位置路径,我不希望仅为此构建创建另一个放置位置。想要按原样执行现有的构建定义,即使用现有配置。我知道放置路径,但问题是要获取在放置文件的位置创建的文件夹的名称。
    • 很抱歉我一开始很困惑,但我现在明白了你的问题。恐怕我认为没有任何方法可以使用 TFSBUILD.exe 访问构建放置位置。如果您可以控制构建定义,则可以轻松实现这一点。如果您使用的是 TFS 2010,请编辑您的构建模板以更新 SetDropLocation 活动。或者在构建结束时使用自定义活动来完成所有自定义复制。
    • 感谢 AG_85 的投入。
    【解决方案2】:

    如果我完全理解您的问题,$env:BUILD_ARTIFACTSTAGINGDIRECTORY 应该可以帮助您! 感谢您发布这个问题!

    【讨论】:

      【解决方案3】:

      查看互联网上的所有输入和 cmets,似乎无法从 TFSBuild.exe 中提取更新的内部版本号/名称/放置文件夹名称。

      所以,我管理了一个 Workaorund。 (有点乏味,但有效)

      将 TFSBuild.exe 命令的所有输出推送到 txt 文件。

      TFSBuild.exe 启动“TFS 服务器路径”>>“某些 TXT 文件”

      解析 txt 文件并提取包含值“Updated Build number:”的行并获取输出文件夹名称。

      我知道所有构建的放置位置,附加文件夹名称并获取文件。

      【讨论】:

      • 您对构建定义的访问受限的原因是什么?对于构建定义(xaml 或 tfsbuild.proj)中的简单文件复制活动来说,这是一种过度杀伤力。
      猜你喜欢
      • 2012-06-22
      • 2020-10-08
      • 1970-01-01
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-22
      相关资源
      最近更新 更多