openSUSE:构建服务概念应用目录
应用程序目录集成接口
为了吸引项目在构建服务中构建,我们实现了一个接口,该接口根据一个项目名称和软件包列表返回二进制软件包的路径。
使用场景是邀请应用程序目录系统,例如 http://kde-apps.org,为他们的用户(在本例中,用户是上游维护目录条目的人员)提供以下服务:如果他们在OBS中构建二进制软件包,目录应用程序将获取OBS项目和软件包名称。然后,目录应用程序使用OBS的集成接口,并使用这两个参数获取软件包的可用二进制软件包列表,请参阅下面的示例结构。目录应用程序可以为用户呈现一个漂亮的下载框,以便从OBS中为他们的系统选择rpm软件包。
为了使目录应用程序更加方便,还提供了有关可用发行版的详细信息。它包含一些描述、名称和图像,目录应用程序可以使用这些信息。它完全独立于软件包信息,以便可重用。
发行版信息
调用OBS API
GET /public/distributions
返回一个XML文档,如下所示
<distributions>
<distribution id="opensuse-11.0" vendor="opensuse" version="11.0">
<name>openSUSE 11.0</name>
<project>openSUSE:11.0</project>
<repository>standard</repository>
<reponame>openSUSE_11.0</reponame>
<icon width="8" height="8" url="
"/>
<icon width="16" height="16" url="
"/>
<link>https://opensuse.net.cn</link>
</distribution>
<distribution id="opensuse-10.3" vendor="opensuse" version="10.3">
<name>openSUSE 10.3</name>
<project>openSUSE:10.3</project>
<reponame>openSUSE_10.3</reponame>
<repository>standard</repository>
<icon width="8" height="8" url="
"/>
<icon width="16" height="16" url="
"/>
<link>https://opensuse.net.cn</link>
</distribution>
<distribution id="fedora-9" vendor="fedora" version="9">
<name>Fedora 9</name>
<project>Fedora:9</project>
<reponame>Fedora_9</reponame>
<repository>standard</repository>
<icon width="8" height="8" url="
"/>
<icon width="16" height="16" url="
"/>
<link>http://www.fedoraproject.org</link>
</distribution>
</distributions>
其中包含有关发行版的一些有趣信息。
此文件没有合适的更新机制。应用程序目录应用程序应每天获取此文件,或者在软件包信息块中出现未知ID时获取(当然,这不包括现有条目的更改)。
二进制软件包信息
可以通过以下调用获取从OBS中的源软件包构建的现有二进制软件包的信息
GET /public/binary_packages/openSUSE:Tools/osc
这将产生一个如下所示的xml文档
<package package="osc" project="openSUSE:Tools">
<title>openSUSE (build service) commander</title>
<description>Commandline client for the openSUSE build service.</description>
<binaries>
<list distribution="fedora-11">
<repository url="http://download.opensuse.org/repositories/openSUSE:/Tools/Fedora_11/openSUSE:Tools.repo"/>
<rpm arch="i386" url="http://download.opensuse.org/repositories/openSUSE:/Tools/Fedora_11/i386/osc-0.123-18.1.i386.rpm"/>
<rpm arch="x86_64" url="http://download.opensuse.org/repositories/openSUSE:/Tools/Fedora_11/x86_64/osc-0.123-18.1.x86_64.rpm"/>
</list>
<list distribution="ubuntu-9.04">
<repository url="http://download.opensuse.org/repositories/openSUSE:/Tools/xUbuntu_9.04/"/>
<deb arch="amd64" url="http://download.opensuse.org/repositories/openSUSE:/Tools/xUbuntu_9.04/amd64/osc_0.117-1_amd64.deb"/>
<deb arch="i386" url="http://download.opensuse.org/repositories/openSUSE:/Tools/xUbuntu_9.04/i386/osc_0.117-1_i386.deb"/>
</list>
<list distribution="opensuse-Factory">
<ymp url="https://software.opensuse.net.cn/ymp/openSUSE:/Tools/openSUSE_Factory/osc.ymp"/>
<repository url="http://download.opensuse.org/repositories/openSUSE:/Tools/openSUSE_Factory/openSUSE:Tools.repo"/>
<rpm arch="noarch" url="http://download.opensuse.org/repositories/openSUSE:/Tools/openSUSE_Factory/noarch/osc-0.122-14.2.noarch.rpm"/>
<rpm arch="noarch" url="http://download.opensuse.org/repositories/openSUSE:/Tools/openSUSE_Factory/noarch/osc-0.122-14.1.noarch.rpm"/>
</list>
</binaries>
</package>
对于每个可用的发行版,xml都包含一个或多个元素的列表。返回的链接的类型和数量取决于发行版
- 所有发行版
返回一个或多个rpm或deb元素,每个可用架构和子软件包对应一个。此外,还返回一个包含存储库URL的存储库元素。
- 所有openSUSE发行版
如果软件包名称与其中一个二进制rpm匹配,则我们提供一个<ymp>元素。