【问题标题】:TFS multiple build definitions with shared resources betweenTFS 之间具有共享资源的多个构建定义
【发布时间】:2014-09-09 13:23:36
【问题描述】:

我正在尝试为 TFS 服务器规划构建定义,但我遇到了一个问题/问题,我想在继续之前得到澄清。

这是我们项目设置的简化版本,抱歉我在这台机器上没有 UML 工具:)

我想要完成的是正确的构建定义,以便:

  1. 如果解决方案 1 有签入,则构建解决方案 1 及其依赖项目 Dependency 项目。
  2. 如果解决方案 2 有签入,则构建解决方案 2 及其依赖项目 Dependency 项目。
  3. 如果 Dependency Project 有签入,则构建解决方案 1 和解决方案 2(使用 Dependency 项目)
  4. 如果单次签入涉及所有 3 个项目(例如),则仅构建解决方案 1 和 2一次

我可能会使用门控签入来防止在构建中断时提交到源代码管理。

已经有一段时间了,但我当时相信如果我有 3 个构建定义:

  • 监控解决方案 1 文件夹 - 构建解决方案 1
  • 监控解决方案 2 文件夹 - 构建解决方案 2
  • 监控依赖解决方案文件夹 - 构建解决方案 1 和解决方案 2

大部分情况下都有效,但是如果在解决方案 1 和依赖项解决方案 (IIRC) 上都发生了一次签入,则解决方案 1 将被构建两次。

虽然这是一个不便,我没有弄清楚它,但很高兴知道如何以正确的方式做到这一点。

【问题讨论】:

    标签: tfs msbuild continuous-integration build-definition build-dependencies


    【解决方案1】:

    @Kritner 我建议您从依赖项的输出创建一个 NuGet 包,并将其发布到内部 NuGet 存储库。解决方案 1 和解决方案 2 应依赖 NuGet 包。

    这是在签入新源时触发的一次构建延迟。

    此时,如果有新版本的依赖项可供您使用,您将在尝试构建任一解决方案时收到通知。 Visual Studio 中的开发人员构建将能够选择现在是否合适。

    我建议您在这里停下来,让开发人员在升级时进行选择。但是你可以走得更远。

    如果您使用 MyGet 之类的东西来托管您的依赖项,您可以让它为构建创建触发器。您可以使用 VSO 和服务挂钩来执行此操作,或者您可以编写一些东西来监视新包,然后触发其他构建。如果仅在成功构建和测试后发布包,则可以提高依赖项的质量。

    【讨论】:

    • “Nugent”还是“NuGet”?
    猜你喜欢
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    • 2014-10-27
    • 2020-12-15
    • 1970-01-01
    相关资源
    最近更新 更多