【问题标题】:Team Foundation Server Schedule trigger only if another build is not failing只有在另一个构建没有失败时才会触发 Team Foundation Server 计划
【发布时间】:2013-09-06 23:59:54
【问题描述】:

目前我有一个金丝雀版本,可以构建代码并运行测试,但不会“发布”任何内容。这只是一种确保签入不会破坏构建的方法。

我有第二个构建,它是构建和发布的“发布”构建(此时它不进行测试,因为它假定金丝雀构建经过验证的测试)。如果队列中有变更集,则此发布构建每晚运行。但是如果最后一个金丝雀版本也坏了,我想阻止发布版本运行。我该怎么做?

发布构建:

  1. 安排在凌晨 1 点构建并运行:

    一个。如果队列中有变更集并且

    b.如果上次 Canary 构建成功。

【问题讨论】:

    标签: tfs tfsbuild


    【解决方案1】:

    您是否考虑过将您的“金丝雀”构建更改为门控签入,这将阻止任何代码进入代码库,除非构建成功。

    然后,将您的夜间构建设置为一个时间表(我想您已经有了),但只需取消选中“即使没有任何变化也构建”

    【讨论】:

    • 我会试试这个,这将是理想的,既可以解决我的问题,又可以简单明了地防止破坏代码进入构建。
    【解决方案2】:

    除非您创建像这样的自定义模板http://blog.stangroome.com/2011/09/06/queue-another-team-build-when-one-team-build-succeeds/

    ,否则无法在默认流程模板中检查另一个构建是否失败

    为什么不在发布构建中包含单元测试,无论更改集的大小如何,我猜单元测试将运行一次,并且我想它不会花费更多时间。所以你可以改变流程

    发布构建:

    安排在凌晨 1 点构建并运行:

    一个。如果队列中有变更集并且

    b.如果构建成功并且单元测试通过。

    【讨论】:

      【解决方案3】:

      您的构建过程是否太耗时?如果不是,为什么不在发布前进行构建?您不必检查 CI 构建输出吗?

      这很简单,您不需要任何额外的努力:)

      【讨论】:

      • 我还没有完成将我的 TeamCity 构建过程转换为 TFS,所以我不确定 PROD 构建需要多长时间。我希望 Canary 构建尽可能快地运行,这样它就会很快失败。 Canary 目前需要 10 分钟。
      • 我认为 10 分钟已经足够快了。在这种情况下,我认为最好在发布之前进行构建:) 这样您就不必编写代码来检查金丝雀构建的状态。在我看来,这将是最简单和最有成效的。
      • 我的 Prod 构建在发布之前进行构建。但我不想在每次有人签入时发布。每次签入后都会构建金丝雀版本,并确认您没有破坏构建。我现在接受@pm_2 的建议。
      猜你喜欢
      • 2020-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-19
      • 2018-03-11
      • 1970-01-01
      • 1970-01-01
      • 2013-09-30
      相关资源
      最近更新 更多