【问题标题】:TeamCity: trigger project trigger with a single click and common build numberTeamCity:通过单击和通用内部版本号触发项目触发器
【发布时间】:2016-01-24 20:32:33
【问题描述】:

我是 TeamCity 的新手(但不是 CI 系统),我一直在试图弄清楚如何解决这个配置:

我安装了最新的 TeamCity 专业版 9.1.3(3 个构建代理,20 个配置)

这是我的 TeamCity 项目布局:

项目 A
-- 构建产品 X (WIN)
-- 构建产品 Y (WIN)
-- 构建产品 Z (Linux)

我有专门的 3 个代理来相应地构建上述构建配置 - 2 个在 Windows 上,1 个在 Linux 上

WIN 产品是使用批处理、powershell 和 msbuild 脚本的组合构建的
Linux产品是使用shell脚本构建的

手动触发这 3 个构建(在项目 A 下)可以正常工作。但是,这是不可行的,因为我们有许多功能分支,并且它们都有相似构建配置 - 每个构建单击 3 次 + 在每个构建配置上设置构建参数是昂贵的。

所以,这是我的问题:

  1. 有没有办法通过单击触发整个项目来构建?这样做,应该并行运行这些构建
  2. 如果可能为 1,那么如何在这 3 种构建配置中设置相同的构建号(构建参数)?
  3. 是否可以设置一个 VCS 触发器来轮询构建它们并触发整个项目的任何存储库的更改(前提是 1 是可能的)

请注意,我尝试同时配置 snapshotartifact 依赖项来完成这项工作,但创建依赖项只会暂停其他构建配置到 wait直到依赖项目完成,但这对我们来说是不可行的——它们需要并行运行。 (我们的构建大约需要 45 分钟才能完成)- 是的,我们有一个庞大的产品要打包。

如果有任何正确方向的指点,我将不胜感激

谢谢

【问题讨论】:

    标签: continuous-integration teamcity build-process teamcity-9.0


    【解决方案1】:

    是的,可以实现一键触发并行运行:创建不执行任何操作(无构建步骤)的第 4 个(或第 0 个)构建配置。让我们将此配置称为“零”。您的三个构建配置都将在零上具有“已完成构建”触发器(在零完成时触发)以及在零上的快照依赖关系。

    最好的一点:你只需要在 Zero 中定义 common/shared 参数,其他三个配置可以重用这些。例如,如果你在零中定义%foo%,那么其他三个都可以使用%dep.MyProject_Zero.foo%。这也意味着您可以获得 Zero 的内部版本号:%dep.MyProject_Zero.build.number%。在您的三个构建配置中的每一个中,切换到“常规设置”并将您的“构建号格式”设置为上述。

    对于 VCS 触发,只需将零设置为跨越所有三个 VCS 区域。您是在暗示它们各自位于不同的存储库中...我对此没有经验,但假设零可以跨越所有三个存储库。

    最后,如果您使用功能分支,并且您的 VCS 是 git、mercurial 或 Perforce Streams,请确保您已阅读有关 TeamCity feature branches support 的信息;它可以为您节省大量时间!

    【讨论】:

    • 完美! - 上述建议解决了我的问题 1 和 2 - 将尝试 3 并让您知道。 - 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    • 2011-09-04
    相关资源
    最近更新 更多