归档:构建服务后端关键组件
| 本文关于开放构建服务的文档已过时! 您可以在 https://openbuildservice.org/help/manuals/obs-user-guide/cha.obs.architecture.html 上找到最新的信息 |
OBS 包含多个组件;此页面提供概述。
- 草稿*
后端
主要的 OBS 服务器位于 /usr/lib/obs/ 中
bs_srcserver
每个 OBS 都有一个源服务器,用于管理源、修订、项目/软件包元数据、“链接”处理、(提交)请求、二进制软件包搜索等
源服务器是前端的接口,可以向一个或多个仓库服务器传递事件。
它具有 http 接口。
bs_repserver
该系统向 worker 或前端 API 提供二进制文件。它从 worker 接收构建结果并维护构建历史记录。
它还处理生成的软件包并通知签名服务器。
它提供构建依赖项计算,即本地构建(通常是“osc build”)所需的二进制文件。
仓库服务器可以存在多个,例如,将 i586 软件包托管在一个系统上,将 ppc 软件包托管在另一个系统上。
worker 在仓库服务器上注册以进行构建作业。
它具有 http 接口。
bs_scheduler
每个架构都有一个调度服务,它通过所有项目和所有仓库中的所有软件包计算构建依赖项。如果发现可以构建的软件包,它会创建构建作业描述。
它会处理有关更改的源或完成的构建作业的所有事件,以进行依赖项重新计算。
它没有 API,但它可以处理通过另一个服务发送的事件形式的命令。
bs_dispatcher
每个 OBS 都有一个调度器,它根据调度器生成的作业将请求分发给 worker。
它没有 API,只是读取作业目录并通知 worker。
bs_publisher
发布器响应调度器生成的发布事件。它将项目的软件包传输到仓库树,生成元数据并将内容上传到下载服务器。
它没有 API,只是读取发布目录中的事件并读取项目配置以了解如何创建仓库。
bs_worker
worker 在构建主机上启动,并管理实际的构建。它与源服务器和仓库服务器通信,并由调度器收到通知。
一个 bs_worker 可以为多个 OBS 服务器实例构建。
bs_warden
是一个可选的进程,用于监视 bs_worker。如果 worker 在没有干净关闭消息的情况下崩溃,它会终止正在运行的作业注册。
bs_signer
是一个推荐的进程,用于在构建后对软件包进行签名。如果已配置 BSConfig::sign,则必须运行此进程。
流程
worker 由调度器触发,从仓库服务器请求二进制文件,从源服务器请求源,并将生成的软件包发送到仓库服务器。
仓库服务器随后触发签名服务器的事件,签名完成后,调度器将获取作业,将其排序到仓库中,最后在仓库构建周期完成后为发布器创建一个事件。