performance - 在TeamCity中进行多次并行构建后触发一次后续构建

标签 performance build continuous-integration teamcity

我们已经收集了150多个项目,通过多个构建代理将它们重新配置和优化为多个TeamCity配置,以尝试改善当前以高度顺序的方式构建的构建服务器的性能。

技术(Web,dotNet,VB6和COM +)和系统体系结构的结合意味着存在多个步骤(配置),这些步骤现在可以并行运行,但需要进一步整合。

这是一个非常简化的依赖方案,但是代表了我们遇到的问题。

A -> B -> Collate (-> Deploy)
A -> C -> Collate (-> Deploy)

问题是,如果对A进行更改,则将导致B和C都被触发,这将导致Collat​​e(和Deploy)步骤运行两次,尽管这是A中的常见触发。简化了将近二十种配置的实际设置,以及频繁的改造正在影响速度的提高。

谁能建议我以某种方式确定B和C都会由于A而被触发的事实,并使Collat​​e步骤在触发Collat​​e步骤之前等待B和C都完成吗?显然,对B或C的更改应该能够独立触发整理。

最佳答案

我是TeamCity的新手,但我相信这是您需要的:

  • A:没有触发器或依赖项
  • BC:没有触发器,依赖于A的快照
  • Collate:VCS触发器,对BC的快照依赖性

  • 使用该设置,VCS单次推送将导致:
  • 正是ABCCollate的一种构建
  • AB 之前构建的
  • CB
  • 之前构建的
  • CCollate
  • 都是从VCS的同一点构建的

  • 如果您希望将工件传递到链的下游,则还需要定义工件依赖关系。

    如果不同的构建使用不同的VCS存储库,那么您仍不应在ABC上设置VCS触发器;相反,您可以在VCS触发器上为Collate设置“在快照依赖项上的更改时触发”选项。

    关于performance - 在TeamCity中进行多次并行构建后触发一次后续构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19806689/

    相关文章:

    .net - Dotnet 在 VSTS 上还原 MyProj.csproj 显示 "The file type is not recognised"

    node.js - Meteor 构建在部署到 Heroku 时中断

    sql-server - 比较触发器中的字段

    c# - 加快字节解析可能吗?

    java - 数组/vector 作为方法参数

    grails - 我有一个gitlab项目,需要在不同的环境(Oracle等)中运行集成测试,如何更改环境

    spring-boot - 基于系统变量的 SpringBootTest 中的事件配置文件

    python - 在 Pandas 中分配列值时的冗余计算

    android - 如何在build.gradle中区分os/cpu类型?

    build - 寻找 .NET BuildServer SaaS