openSUSE:Build Service 私有安装需求

跳转到:导航搜索

需求

任何有将开源项目集成到定制 Linux 发行版中经验的开发者都知道,你需要多么细致和谨慎地跟踪和解决每个集成所施加的所有依赖关系。 此外,如果你需要跟踪这些“待集成”软件包的各种升级,生活可能会迅速变得痛苦。 为了提高效率,你需要能够

  • 为开发团队提供构建复杂软件的设施,而无需担心软件包间依赖关系的复杂性。
  • 启用不同项目的构建,这些项目之间部分共享软件包
  • 启用快速创建测试分支,以验证对内部或外部软件包的修改的影响。
  • 允许重建 10 年前与现在完全相同的软件(包括构建工具),然后集成一个修复补丁。
  • 促进将合作伙伴/客户代码集成到你的发行版中
  • 寻找启动成本低但随着项目发展和取得成功而能很好地扩展的解决方案
  • 为你的代码和构建提供安全的环境
  • 提供与现代源代码版本管理(例如 git)良好集成的解决方案。
  • 提供不需要专门团队来安装和维护的解决方案
  • 提供运行非常可靠并提供可靠记录的解决方案
  • 提供文档完善且易于开发者使用的解决方案

openSUSE 项目的 Open Build Services (OBS) 可以提供所有这些。 在撰写本文时,文档仍然有点薄弱,但希望情况会很快得到改善。

OBS 设备

OBS 项目是 openSUSE 项目的一个子系统,因此作为任何 openSUSE 发行版的一部分都可以使用。 但是,安装和维护 OBS 实例可能非常繁琐。
openSUSE 项目维护 OBS 设备,顾名思义,它们的安装和使用就像熟悉家用电器一样简单。 这确实是一种即插即用服务。
本教程倾向于使用 OBS 设备,因为实践经验让我相信这是生产环境的最佳选择。 如果你想使用更传统的方法,请忽略我的安装指南。
可以在 openSUSE:Build Service Appliance 找到 OBS 设备。 为了完全实施本教程,你需要下载最新稳定的 obs-server 和 obs-worker 版本。
根据你的需要,设备适用于不同的目标(raw、vmware、ISO)。 假设你将使用一台专用 PC 来运行本教程,我的所有示例都将假定 raw 模型。 如果你需要最终部署该模型,则转录到 vmware 和 ISO 非常明显且容易。
本教程是在将一个 OBS 服务部署给一个由大约 50 名软件工程师组成的团队后编写的,该团队开发一个基于 MeeGo 的项目,并专门为 Amino Communications (Cambridge, UK) 的电视业务提供附加组件,并得到 MeeGo 社区和 Intel 的一些关键 OBS 维护者的支持。

你需要什么

仅测试

如果你只需要调查私有 OBS 实例的使用情况,你只需要一台带有 2 个硬盘驱动器 (HDD) 和 4 GB 内存的 PC,用于运行 obs-server 和 obs-workers。
我强烈建议你在创建生产环境之前进行一些测试。

生产环境

对于生产系统,我建议你创建一个不运行任何 worker 的专用 obs-server,以及一个 worker 农场(大小取决于你的需求)。
选择此模型的原因是,它允许你在稍后阶段运行一个生产 obs-server 和一个可以共享相同 obs-workers 的测试 obs-server。 如果你计划使用 OBS 来交付和与合作伙伴和/或客户共享代码,则可以扩展此模型以支持一个专用的合作伙伴或客户 obs-server。

在你的工作站上

在你的工作站上,你需要安装 osc 和 build 软件包,以便能够通过命令行访问 obs,以便签入和签出代码,以及创建本地构建。 大多数现代发行版都提供这些软件包,但由于这些工具不断改进,我建议你将你的工作站仓库指向从 openSUSE 或 MeeGo 项目直接上传这些软件包。 MeeGo Wiki 将为你提供安装主要发行版所需的所有工具(osc 和 Mic2)的方法。

如何在 MeeGo Wiki 上安装工具

其他有用资源

我的选项

OBS 设备非常灵活,但我希望将从默认设置更改的选项数量减少到最低。 也许在我的测试时没有提供这些选项中的一些,并且在你运行自己的测试时情况可能会发生变化。 以下是我在此教程中将假定的常规选项。

  • 使用 DHCP,DNS 为设备提供相同的内部和外部 DNS 名称。
  • 使用 ntp 提供时间,并通过 DHCP 设置 ntp 服务器。
  • 使用专用 HDD (sda) 接收设备软件
  • 使用第二个 HDD 接收数据(对于生产环境,这应该是一对配置为软件镜像 (RAID1) 的 HDD)。
  • 优先考虑构建编译速度而不是硬件成本
  • 免费访问服务器的端口 80、82 和 444。
  • 我不会在本教程中介绍备份你的数据,但你必须这样做。
  • 安全性由 OBS 设备外部强制执行。
  • 使用我的 OBS 来支持集成外部合作伙伴的链接项目。