软件包构建与仓库服务

文中对于本编译系统的管理员,下简称 “管理员”。 而对于软件包维护者及仓库所有者,提交 commit 并触发编译的工程师,下简称 “工程师”

本仓库用于 oepkgs 软件编译系统的配置,其中的用户信息和软件包构建信息用于被导入到编译系统数据库。

软件架构简介

软件架构图

系统组成

  1. Gitee

    • 用户信息仓库

      每次有新的工程师需要加入,就可以通过向此软件仓库提交 PR ( Pull Request ),来达到通知管理员配置系统并提供相应信息的目的。管理员在负责审批新加入的工程师,并协助工程师维护自己的身份认证信息。

    • 软件包构建信息仓库

      工程师会在该系统中拥有自己的构建信息仓库,用以维护控制系统中软件包的编译。该仓库需要工程师自己建立和维护,并注册该仓库的托管地址到系统中。

    • 软件包源码仓库

      工程师自己维护的软件包源码仓库,该仓库与系统中软件包的对应关系和使用需要工程师自己在自己的软件包构建信息仓库中自行维护。

    • 客户端工具

      工程师使用,用来通过自己的软件包构建信息仓库来管理自己的软件包构建任务。

    • 服务端工具

      管理员使用,用来管理审核通过的用户信息仓库。

  2. 基于 Huawei cloud 的服务器集群

    • Koji server 主服务器[一台虚拟主机]
      • Koji 服务
      • Jenkins 服务
      • RESTful API
      • Nginx 反向代理服务
    • Koji Builder [多台虚拟或实体主机]
      • aarch64 builders
      • x86_64 builders
      • RISC-V builders (待加入)
    • NFS 存储服务
      • 开发资源
      • Linux Distros REPOs

编译过程简述

  1. 工程师通过在 Gitee 中某个软件包源码仓库 的操作( push 、merge 等)触发 Gitee 针对 Jenkins 的 Webhook (需要工程师进行适当配置)。
  2. Gitee Webhook 触发 Jenkins 的 Gitee Plugin (需要工程师使用 客户端工具 提交的配置信息进行任务的创建和配置)
  3. Jenkins 的 Gitee Plugin 被激活后会提交相应的编译任务给 Koji Hub( Koji Server 中的组件),并开始获取任务状态,直至任务结束。
    • Koji Hub 根据任务信息,将任务分配给相应的空闲 Koji Builder 进行编译。
    • 如果 Koji Builder 编译成功,Jenkins 负责将软件包复制到仓库所有者指定的软件仓库路径(位于 NFS 存储服务中),并更新仓库信息。
  4. 任务结束后,Jenkins 负责收集所有任务信息,并通过 Gitee comment 反馈给相关仓库的特定 commit 点。

相关仓库列表

使用的仓库见附录1

目前所有的 Git 仓库均托管于 oepkgs.net社区官方Gitee仓库

参与贡献

Copyright © oepkgs.net All rights reserved.

版权所有 © oepkgs.net 保留所有权利

中国科学院软件研究所openEuler 社区共同发起并提供支持

京ICP备05046678号-13

Email: support(at)oepkgs.net