使用主/从 Jenkins 服务器还是维护 3 个独立的服务器?

使用主/从 Jenkins 服务器还是维护 3 个独立的服务器?

背景:

我是一名软件开发人员,在配置持续集成解决方案方面有一些经验,但对某些持续集成策略的优缺点不太熟悉,希望就两种服务器管理策略的优点和挑战寻求建议。

问题:

我们有 3 个独立的、复杂的 Android 应用程序,我正在为其创建持续集成服务器。我已成功创建了一个运行 Windows Server 2008 的原型虚拟机,它成功编译了代码、启动了模拟器并运行了 Android 单元测试。另外,我还能够运行我们希望在此代码上运行的静态分析,以便为开发人员提供反馈。

在之前使用 CruiseControl.NET 而不是 jenkins 的配置中,我们成功维护了 3 个独立的虚拟机,所有虚拟机都具有独立的虚拟化硬件。好处此设置的特点是分隔 - 一个项目可以更改其构建服务器,而不会影响另一个项目。

然而,转向詹金斯,我注意到它支持主/从节点,这样我就可以配置一个包含多个项目的 Jenkins 主实例,然后配置多个从属节点,据我所知,这些从属节点将执行任何 Jenkins 任务 - 编译、单元测试、静态分析并将这些信息传递回主服务器。好处这个设置似乎是:

  • 可扩展性——我可以轻松添加第 4 或第 5 个项目,并保持相同数量的从属服务器
  • 仅需要设置 1 个主服务器和 3 个从服务器,这可能比设置 3 个独立的主服务器更容易。

挑战这种情况似乎是:

  • 我必须学会如何创造奴隶
  • 我必须处理客户端和从属设备之间的通信
  • 我在运行需要 UI 交互的单元测试时可能会遇到问题 - 帖子描述了如何运行无头奴隶

是否还有其他我忘记的直接好处或挑战,或者是否有过设置詹金斯经验的人对哪种方法更合适有何看法?

答案1

您的理解非常完整。我唯一能补充的是,我认为 jenkins/hudson 中“主/从”术语的使用有点不准确。因为“从”更像是分布式方案中触发作业/构建/项目的执行者。我认为在您的环境中拥有 3 个独立的 jenkins 主服务器是不合理的。

1) -我必须学会如何创造奴隶- 这其实没什么可担心的,它只是从服务器的一个 jar 文件。可以很容易地安装在不同的操作系统上(Linux、Windows、Unix),可以作为服务/守护进程运行。然后你只需要将该从服务器连接到主服务器。

2)我必须处理客户端和从属设备之间的通信- 这也很简单,因为您需要做的就是管理从属服务器连接到客户端的 ssh 密钥和用户帐户。

3)我可能会在运行需要 UI 交互的单元测试时遇到问题- 这应该不是问题。现在应该有很多解决方案了。

再次,我真的鼓励您在 CI 和 CD 的开发工作流程中使用 Jennkins,Jenkins 几乎无所不能。我 3 年前开始使用它,从此再也没有后悔过。

在您的特定情况下,我看到的唯一基石是它是一个新工具,并且在从旧的工作流程迁移时可能会有一点学习曲线和一些调整,但从长远来看,它很可能会极大地造福您和您的团队。

希望这可以帮助。

相关内容