【问题标题】:Teamcity - go back to previous stepTeamcity - 返回上一步
【发布时间】:2014-08-20 07:27:35
【问题描述】:

我们有一种情况,我们有很多构建同时运行,但是我们需要序列化输入的结果。在构建的各个检查点,我们基本上说“如果有东西进入主分支,失败了”......我们真正想要做的是说“如果有东西进入主分支,回到第一步”。

teamcity 有没有办法进入不同的构建步骤?
即在构建中创建一个循环? (没有将整个构建放在一个步骤中)

【问题讨论】:

    标签: build continuous-integration teamcity


    【解决方案1】:

    试试Build Chains

    他们让你指定项目应该运行的顺序,这样如果你有项目A、B和C,B的触发器就是A的成功完成,C的触发器就是B的成功完成。

        A => B => C
    

    他们还让你分叉,这样 A 的成功可以触发 B 和 C,当 B 和 C 都完成时 D 去:

             B
        A =>    => D
             C
    

    【讨论】:

    • 谢谢,但主要是我需要它来循环 - 我可以去 A => B => A 吗?
    • 我不确定......有一些不同的触发器,如重试触发器等,但似乎应该有更简单的方法。您正在关注主分支上的某些内容,如果是这样,您是否希望重新启动构建?一个想法是,您可以尝试调整静默期以更好地抓住即将到来的更改。然后确保步骤 A 速度快,而步骤 B(假设它类似于自动部署或集成测试)有更长的静默期,或者每隔一段时间自动运行小时。
    【解决方案2】:
    1. 如果您想在 A=>B => A 机制中执行此操作,您可以尝试在构建链中执行此操作。

      A 是您的第一个版本。 B 是您的测试版本。 C 是你的依赖版本。

      B依赖于A,C依赖于B

      您需要创建一个构建 B 来轮询 repo 并检查构建 A 启动后是否有任何更改。如果有任何更改失败,则不会触发构建 C 并且构建链失败。但是由于新的更改,会触发构建 A 并创建一个完整的新构建链。

    2. 您还可以更改 vcs 轮询以设置静默期。例如,您可以将构建更改为在触发前等待 5 分钟,以检查是否有任何新更改。如果有新的更改,则重置静默期

    3. 更好的方法是轮询存储库的时间比构建所用的时间更长。例如,如果您的总构建时间为 10 分钟,则以 15 分钟的间隔轮询存储库。但是,这取决于您想要实现的目标,可能不适合您的目的

    4. 您还可以使用Teamcity Shared resources 确保在任何给定时间只有一个目标在运行

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-12
      • 2018-12-20
      • 2019-09-25
      • 1970-01-01
      • 1970-01-01
      • 2021-09-04
      • 1970-01-01
      • 2012-08-02
      相关资源
      最近更新 更多