了解多个本地 TeamCity 构建代理如何协同工作

Understanding how multiple local TeamCity build agents work together

到目前为止,我一直在使用 Travis 并且对此非常满意(尽管它只提供 Linux 环境)但是我正在考虑尝试使用 TeamCity 并与 YouTrack 一起工作。我目前的情况如下:

我有一个由多个应用程序和库组成的项目,这些应用程序和库应该是平台独立的,目标是 Windows、macOS 和 Linux,并针对每个平台捆绑在一起。每次我完成一个功能分支并将其合并到开发分支时,我需要手动拉取新的更改,分别在 Windows 和 macOS 上编译和 运行 测试套件。

我希望能够将更改推送到开发分支并让 CI 工具同时处理所有平台。因此我注意到我可以设置一个在线 TeamCity 服务器(例如在 DigitalOcean 上)并在其旁边有一个 Linux 构建代理 运行ning,同时在我的本地桌面计算机上有一个 Windows 构建代理和我的(本地)Macbook 上的 macOS 构建代理,以便让这些机器使用其系统本机的本地工具链。

首先我想知道这在一般情况下是否可行。 我考虑过使用 Docker 构建代理的图像,直到我注意到Windows 只在 Windows 服务器上构建代理 运行,我必须自己配置容器,安装 msbuild 等。因此,在这种情况下,我考虑只使用我的本地机器及其已经设置的工具链作为构建从站。

最后想知道TeamCity有没有提供构建队列之类的东西。我指的是下面这种情况:我在火车上,正在做某事在我的 Macbook 上并将其合并到分支中。但是,我的带有 Windows 构建代理的桌面目前处于脱机状态。一旦我再次启动它,它会通过排队的 commits/builds 工作吗?

你的场景中的一切似乎都可以用 teamcity 来完成。您可以设置 3 个构建,所有构建都使用相同的触发器。每个构建都有针对特定操作系统的构建步骤。如果您拥有所有机器和代理 运行ning,它们很可能会同时被触发并并行执行它们的构建。

我"m not sure what you are trying to say in paragraph 4 about the "windows 仅在 windows 服务器上 运行 构建代理。Windows 构建代理可以 运行 在桌面版本上在 windows 上,例如 windows 7 或 windows 10.

是的,teamcity 有队列。如果代理离线,构建将保留在队列中,直到代理重新在线或构建被取消。