远程代理与本地代理的持续集成和部署

Remote agents vs local agents for continous integration and deployment

我们目前正在考虑使用 Jira 和 Stash 将我们的 .NET 代码从 TFS 源代码控制移动到 Git。

我们也希望有一个好的持续集成和部署服务器。因此,出于这个原因,我们也在关注 Bamboo.

所有功能似乎都很好。我唯一不明白的是 Agents 部分。有两种口味,Local AgentsRemote Agents.

我知道 Local Agents 安装在与 Bamboo 相同的机器上。并且 Remote Agents 都安装在其他机器上。但我真正不明白的是它的意义所在。你为什么不简单地在本地安装 5 个左右的代理?为什么要在远程计算机上执行此操作?

因此我也在质疑 Local Agent 是否可以将我的 .NET 代码发布到任何其他远程服务器?

是否可以使用 Local Agent 将我们的代码发布到远程机器?还是那是必须使用远程代理的地方?

this link 中所述,本地和远程代理之间的主要区别在于它们 运行:

  • 本地代理 运行 在与 Bamboo 服务器相同的机器上。他们甚至 运行 作为同一个 process/JVM.
  • 的一部分
  • 远程代理几乎可以 运行 任何地方。您网络中甚至云中的专用服务器或 VM。远程代理使用消息队列 (JMS) 与中央 Bamboo 服务器通信。

为了帮助决定您需要哪一个,请尝试考虑您将拥有多少个代理 - 一开始,但也要考虑更长远的问题。

如果您只打算拥有一名代理人,您或许可以通过本地代理人来实现。如果您希望随着时间的推移不断增加代理的数量,您可能需要计划使用远程代理。

使用远程代理的几个论点是:

  • 灵活性:随着您的成长,您可以根据需要轻松添加更多远程代理。如果您需要快速启动更多代理,弹性云部署真的很有帮助。
  • 可扩展性:如果您只使用本地代理,它们将全部 运行 在同一个 Java 虚拟机 (JVM) 中。每个本地代理都会消耗 CPU 和内存,这意味着您无法无限扩展。使用远程代理,每个代理都有自己的进程,这将允许更好地扩展代理,而不会达到进程 size/memory 使用方面的 OS 限制。
  • 位置:您可以拥有一个中央 Bamboo 服务器,然后用它支持多个单独的团队,例如如果您是一家全球性公司。每个团队都可以 运行 自己构建带有专用远程代理和专用配置的服务器。
  • 故障转移:拥有多个远程代理,并将它们与中央 Bamboo 服务器分开将使您能够以更轻松的方式重新启动代理。如果中央 Bamboo 进程中的一切都是 运行,如果您重新启动它,您的所有代理也将重新启动。

关于您的网络问题:当然,您可以从远程代理或本地代理部署到任何其他服务器。您需要在服务器之间建立网络访问,只要您拥有它,您就可以非常自由地进行部署。在大多数情况下,我们使用 SSH/SCP/SFTP,但也使用 HTTPS 来使用 Web 服务进行部署(例如 Tomcat 或 JBoss)。

一般来说,远程代理会给您带来更大的自由度和灵活性。缺点是稍微复杂一些installation/configuration。如果您打算超越一两个构建代理,通常值得付出努力。