gpt4 book ai didi

msbuild - 单个 TFS 2010 构建定义能否用于多个分支?

转载 作者:行者123 更新时间:2023-12-04 15:03:11 24 4
gpt4 key购买 nike

我负责我们产品的构建,并被要求提出一种自定义现有构建定义的方法,以便在需要时构建不同的分支。

该产品的构建过程已经有几个自定义步骤和操作,并且该产品具有大量构建的项目文件,因此为每个创建的新分支设置新的构建定义是无效的。

构建定义设置为从主分支构建。目的是输入一个特定的分支(使用可以在构建排队时输入的工作流参数),然后将构建该分支而不是默认的 Main 分支,而无需编辑构建定义。

我有一个单独的测试程序,用于测试我所有的自定义构建事件和过程。在此构建定义的工作流中,我添加了一些用于记录目的的构建消息,以便我可以查看构建过程中使用的变量的值。

我还基于此测试程序创建了一个分支,准备测试可用于构建多个分支的构建定义

首先,我从原始分支运行原始测试解决方案的项目文件的构建,然后更改构建定义,以便使用新分支完成相同的操作并运行另一个构建。在比较 2 个分支之间的构建日志时,它们之间只有一些细微的差异。 (日志详细程度设置为诊断)

第一个区别 - 我查看了 Workspace 变量和构建的 Folders 属性引用了它们各自的分支,特别是 Folders 属性的 ServerItem 属性

第二个区别 - 正在构建的项目文件 (BuildSettings.ProjectsToBuild) 来自各自的分支

除了这些之外,我没有看到 2 个构建日志之间的任何其他差异

这里的主要问题 :

是否有一种标准方法可以交换为单个构建定义构建的分支?

如果没有,是否可以在排队构建时简单地将自定义工作流模板(在 Workspace 和 BuildSettings.ProjectsToBuild 中)中对默认主分支的所有引用更改为输入的分支?

与往常一样,提前感谢您的任何帮助

最佳答案

我设法修改了我的构建的工作流模板,以便可以为解决方案的多个分支进行构建。为了实现这一点,我必须更改工作流中的某些内容,并为运行构建的服务帐户创建一些额外的工作区。

  • 我在工作流中添加了一个参数,以便在构建排队时可以输入所需的分支。
  • 我更改了构建的放置位置,以便它与输入的分支相关(可选)
  • 在构建机器上为分支构建创建了一个单独的源目录
  • 初始化 WorkspaceName 和 SourcesDirectory 以便它们匹配新的工作区名称和源目录文件夹
  • 我创建了一个自定义事件来更改 BuildSettings.ProjectsToBuild 中的项目/解决方案列表,以便它们从输入的分支
  • 中引用它们。
  • 我在测试阶段注意到,即使我的输入分支的新工作区最初设置为使用输入的分支作为其 ServerItem,它仍然会使用在构建定义中输入的 ServerItem 创建工作区。为了解决这个问题,我创建了另一个自定义事件来重新映射分支工作区,以便 ServerItem 指向正确的分支

  • 我的工作流程中还涉及其他一些事情,但它们是我的开发人员要求的更多调整,上述步骤导致单个构建定义的多个分支构建。

    关于msbuild - 单个 TFS 2010 构建定义能否用于多个分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7671438/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com