openSUSE:构建服务概念 Repomd 下载

跳转到:导航搜索

关于在按需下载时支持自动下载 repomd 文件的新的草案提案

范围

当前版本的按需下载需要用户手动下载 Primary.xml 文件并将其放置在后端,这需要对后端服务器的 shell 访问权限。然而,项目 xml 配置文件中给出的 URL 指定了后端自动下载此文件的所有必要信息。

yum 仓库的主要文件是 repomd.xml 文件。此文件位于一个众所周知的路径,可以通过将 /repodata/repomd.xml 添加到主仓库 URL 来构造。此文件提供有关重要文件位置的信息,例如 primary.xml 文件。因此,与其手动下载 primary.xml 文件,不如下载 repomd.xml 文件,解析它以发现 primary.xml 文件的位置,然后下载该文件。

现状

当前,primary.xml 数据从仓库静态下载一次。


用例、功能、约束

用例

按需下载

当前按需下载的设置要求需要 shell 访问后端服务器才能下载 primary.xml。此更改允许在无需访问后端的特殊权限的情况下设置按需下载。

项目所有者的视角

理想情况下,这应该对项目所有者是透明的,除了可以通过 API 指定 repomd 文件的下载位置的能力之外。

功能

将有一个函数来下载 repomd 文件并在 bs_sched 中调用“scanrepo”事件

限制

本节包含 OBS 当前状态以及底层构建过程(debian 和 rpm)中未记录、文档记录稀少或显而易见但存在的行为,这些行为无法更改,因为它们是固有存在的。约束记录的一个问题是“向后兼容性”。

兼容性

这不应该引起与向后兼容性的任何问题。


架构和实现

实现说明

当 bs_sched::addscan_repo 检测到没有 primary.xml 时,它应该向 bs_repserver 中的一个子程序发送消息,以下载适当的 repomd 文件。repomd 文件位于仓库中的静态位置。下载文件后,子程序应向 bs_sched 发送“scanrepo”事件。