# obs_meta
**Repository Path**: src-openeuler/obs_meta
## Basic Information
- **Project Name**: obs_meta
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 15
- **Forks**: 317
- **Created**: 2020-05-25
- **Last Updated**: 2025-06-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: sig-release-management
## README
# obs_meta
### 介绍
1.该项目用于管理obs(Open Build Service)系统多个仓库的软件包,通过_service文件达到对obs仓库中软件包的增、删、改、查目的。
2.该项目用于管理obs工程,通过对相关工程的对应的meta文件的修改实现对obs工程的控制管理。
### 软件目录结构
```xml
obs_meta(码云仓库名称)
| -- 软件包码云仓库分支名称
| -- obs系统中软件包在对应分支下的工程
| -- 软件包名称
| -- 软件包对应的_service文件
| -- multi_version
| -- multi相关码云仓库分支名称
| -- multi分支中相关obs工程名
| -- 软件包名称
| -- 软件包对应的_service文件
| -- OBS_PRJ_meta
| -- 码云仓库分支名称
| -- obs系统中对应分支下的工程meta文件(工程名命名)
| -- obs系统中对应分支下的工程的project_config备份文件(prjconf + obs工程名)
| -- multi_version
| -- multi相关码云仓库分支名称
| -- multi相关obs工程meta文件(工程名命名)
| -- multi相关obs工程的project_config备份文件(prjconf + obs工程名)
```
##### 示例:
```d
obs_meta
Example1:
| -- openEuler-20.03-LTS-SP1
| -- openEuler:20.03:LTS:SP1
| -- gcc
| -- _service
| -- mysql5
| -- _service
| -- openEuler:20.03:LTS:SP1:Epol
| -- artil
| -- _service
Example2:
| -- multi_version
| -- Multi-Version_OpenStack-Rocky_openEuler-20.03-LTS-SP2
| -- openEuler:20.03:LTS:SP2:Epol:Multi-Version:OpenStack:Rocky
| -- openstack-nova
| -- _service
| -- openstack-horizion
| -- _service
Example3:
| -- OBS_PRJ_meta
| -- master
| -- openEuler:Mainline [metafile]
| -- openEuler:Factory [metafile]
| -- openEuler-20.03-LTS-SP1
| -- openEuler:20.03:LTS:SP1 [metafile]
| -- openEuler:20.03:LTS:SP1:Epol [metafile]
| -- multi_version
| -- Multi-Version_OpenStack-Rocky_openEuler-20.03-LTS-SP2
| -- openEuler:20.03:LTS:SP2:Epol:Multi-Version:OpenStack:Rocky [metafile]
| -- Multi-Version_OpenStack-Queens_openEuler-20.03-LTS-SP2
| -- openEuler:20.03:LTS:SP2:Epol:Multi-Version:OpenStack:Queens [metafile]
```
### 使用说明
##### 新增软件包
在fork出来的个人仓库 obs_meta 仓库的对应目录(master分支下openeuler:Factory)创建 "<软件包名>/_service" 文件内容参照实例如下:
```xml
repo
next/分支名(master分支用openeuler表示)/软件包名
```
##### 移动软件包
> **常用于将obs系统里同分支的 openEuler:Factory 仓库编译成功的包,移动到 openEuler:Mainline 仓库**
1.在个人码云仓库obs_meta仓库下,将相应分支及工程下软件包移动到相同分支下另一工程的目录中.
如:master/openEuler:Factory/gcc -->master/openEuler:Mainline/gcc
2.通过个人码云仓库 obs_meta 向 obs_meta 主仓库提交pr,等待pr被接受
3.pr被接受后,后台会删除obs系统原仓库的包即openEuler:Factory仓库里对应的软件包,在新的仓库如openEuler:Mainline中创建对应的软件包
##### OBS新增工程
用于在obs系统中创建公有工程,在个人码云仓库obs_meta仓库下OBS_PRJ_meta中对应分支的目录下创建以工程名命名的meta文件后提交Pull request。
如:OBS_PRJ_meta/master/openEuler:Mainline
```xml
x86_64
aarch64
```
### 特别注意:
● 一个Pull Request请对应一个提交
● 相同分支下请确保软件包只存在于一个工程目录中
● obs_meta/OBS_PRJ_meta中对应分支目录里相关prjconf为首命名的文件为相应工程的project_config文件备份
● multi_version多版本分支中,目录层级与普通有所差异,采用将所有multi分支统一存放到multi_version目录中,其他层级不变,如上述Example2与Example3
● 新增的软件包会先加到obs_meta/master/openeuler:Factory目录,加入之后会在obs系统的openeuler:Factory仓库创建相应的软件包
● 请保证软件包_service文件的url中分支与软件包名与当前service存在路径的分支包名对应(master分支对应openeuler),且软件包所在分支为受保护分支,确保文件格式正确
● OBS_PRJ_meta中meta文件请保证至少存在一位user,对应的project以及repository已存在于obs系统工程中,确保文件格式正确
#### 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request