Skip to main content

openEuler OpenStack SIG 的命令行工具

项目描述

OpenStack SIG 开发工具

os(openEul OpenStack SIG)是OpenStack SIG提供的开发工具。工具该为OpenStack提供了多种。

  1. 自动生成RPM规范
  2. 自动分析OpenStack依赖
  3. 自动提交Spec PR到openEuler社区
  4. 获取OpenStack SIG CI失败的PR列表
  5. 为软件仓库创建分支

oos 在不断开发中,用户可以使用 pypi 上已发布的稳定版

pip install openstack-sig-tool

自动生成 RPM Spec, 是否可选提交 PR 到 openEuler 社区

分别支持生成 RPM Spec 并选择生成 RPM Spec,是否推送并提交到 OpenEuler 社区。

  • 生成程序的RPM Spec
oos spec build --build-rpm --name stevedore --version 1.28.0
# or: oos spec build -b -n stevedore -v 1.28.0
  • 化生成RPM Spec

需要预先准备一个文件保存和生成两个RPM .csvSpec的.csv文件列表,列中需要包含多个文件。pypi_nameversion

oos spec build --projects-data projects.csv
# or: oos spec build -p projects.csv
  • 生成最终的包裹的 RPM Spec,基于包裹的包裹规范(继承请求 changlog),并自动提交到社区。

base 除了upstream,还指定为local。如果为,则表示本地可以local新的规范。base 如果不指定,没有 --push参数时默认为local,有--push参数时默认为upstream

export GITEE_PAT=<your gitee pat>
oos spec build --build-rpm --name stevedore --version 1.28.0 --base upstream --push
# or: oos spec build -b -n stevedore -v 1.28.0 --base upstream --push
  • 自动提交新生成的 RPM Spec,本地制造的规范,并提交到社区。
export GITEE_PAT=<your gitee pat>
oos spec build --projects-data projects.csv --base local --push
# or: oos spec build -p projects.csv --base local --push

除了基本的使用,oos spec build命令的以下参数:

--build-root
    指定build spec的根目录,默认为用户目(通常为root)录的rpmbuild/目录,建议使用默认
-n, --name
    生成单个软件包的RPM Spec的时候指定软件包pypi上的名称
-v, --version
    生成单个软件包的RPM Spec的时候指定软件包版本号
-p, --projects-data
    批量生成软件包RPM Spec的时候指定projects列表的csv文件,必须包含`pypi_name`和`version`两列
-q, --query
    过滤器,模糊匹配projects-data中的软件包名称,通常用于重新生成软件包列表中的某一个,如‘-q cinderclient’
-cl, --change_log
    自定义Spec的changlog。如不指定,则使用默认模板生成;如果指定,并且同时使用`--push`参数,则commit
    message和PR title同样使用指定内容。
--base
    可选值为“local”或“upstream”,如果值为“local”,本地构建新的spec;如果值为“upstream”,在上游
    spec基础上构建新的spec,继承上游spec的changelog
-t,--gitee-pat
    个人Gitee账户personal access token,使用`--push`参数或`--base`参数值为“local”时,此参
    数为必选参数,可以使用GITEE_PAT环境变量指定
-e,--gitee-email
    个人Gitee账户email地址,可使用GITEE_EMAIL指定, 若在Gitee账户公开,可通过Token自动获取
-o --gitee-org
    gitee组织的名称,默认为src-openeuler,可以使用GITEE_ORG环境变量指定
-p, --projects-data
    软件包列表的.csv文件,必须包含`pypi_name`和`version`两列, 和“--version、--name”参数二选一
-d, --dest-branch
    指定push spec到openEuler仓库的目标分支名,默认为master
-r, --repos-dir
    指定存放openEuler仓库的本地目录,默认为build root目录下面的src-repos目录
-a, --arch
    指定生成Spec文件的arch,默认为'noarch'
-py2, --python2
    指定生成python2的软件包的Spec
-sd, --short-description
    指定在生成spec的时候是否对description做截短处理,默认为True
-nc, --no-check
    指定在生成的Spec文件中不添加check步骤
-b, --build-rpm
    指定是否在生成Spec的时候打rpm包,若不指定,只生成Spec,不打RPM包
-o, --output
    指定输出spec文件的位置,不指定的话默认生成在rpmbuild/SPECS/目录下面
-rs, --reuse-spec
    复用已存在的spec文件,不再重新生成。
--push
    指定是否push到gitee仓库上并提交PR

注意:必选参数为--projects-data,或者--name和--version,若同时指定这3个参数,则自动忽略
--projects-data参数。

注意:oos spec build命令列表--push--base参数为“local time, --gitee-pat为必选参数。它是 Gitee 账号的 token 。

自动分析OpenStack依赖

以 OpenStack 训练,以

  1. 调用脚本,生成缓存文件,存放在train_cached_file目录中
cd tools/oos/scripts
python3 generate_dependence.py train
本命令默认会生成Train版本SIG支持的所有OpenStack服务,用户也可以根据自己需求,指定openstack项目,例如
python3 generate_dependence.py --projects nova,cinder train
  1. 调用oos命令,生成依赖分析结果
oos dependence generate train_cached_file

其他支持的参数有:

-c, --compare
    结果是否与openeuler社区仓库进行比对,生成建议
-cb, --compare-branch
    指定openEuler比对的仓库分支,默认是master
-cf, --compare-from
    指定openEuler比对的仓库基础分支,用来给出sync分支建议,默认是master
-t, --token
    如果使用了-c,需要同时指定gitee token,否则gitee可能会拒接访问。
    或者配置环境变量GITEE_PAT也行。
-o, --output
    指定命令行生成的文件名,默认为result.csv

该命令运行完后,根目录下会生成1个结果文件,默认为result.csv

获取OpenStack SIG PR列表

该工具能够扫描SIG包含项目的公关文件,打开堆栈成列表。

  1. 将公关信息列表,输出结果
oos repo pr-fetch -r REPO -t gitee-pat

该命令所支持的参数如下:

-t, --gitee-pat
    [可选] 个人Gitee账户personal access token,可以使用GITEE_PAT环境变量指定
-r, --repo
    [可选] 组织仓库的名称,默认为组织下的所有仓库,格式为openeuler/xxx,src-openeuler/xxx
-o, --output
    [可选] 输出文件名,默认为prs.yaml

该命令运行完后,目录下会生成1个结果文件,默认为prs.yaml

创建软件仓

可以使用oos repo create命令创建openeuler或者src-openeuler软件仓

  • 在 openeuler 或 src-openeuler 创建软件,需要提供创建仓库的软件仓列表.csv文件或指定不同的软件仓,以及 Gitee 账号等信息:
oos repo create --repo autopage:python-autopage -t GITEE_PAT

或者指定一个.csv文件创建多个软件仓库,.csv包括pypi_name和repo_name两列:

oos repo create --repos-file ~/repos.cvs -t GITEE_PAT

该命令所支持的参数如下:

-t, --gitee-pat
    [必选] 个人Gitee账户personal access token,可以使用GITEE_PAT环境变量指定
-e, --gitee-email
    [可选] 个人Gitee账户email地址,可使用GITEE_EMAIL指定, 若在Gitee账户公开,可通过Token自动获取
-o, --gitee-org
    [可选] repo所属的gitee组织名称,默认为src-openeuler
-r, --repo
    [可选] 软件仓名,和--repos-file参数二选一,格式为pypi_name:repo_name
-rf, --repos-file
    [可选] openEuler社区软件仓库名的.csv文件,目前包含`pypi_name`和`repo_name`两列,和--repo参数二选一
--community-path
    [可选] openeuler/community项目本地仓路径
-w, --work-branch
    [可选] 本地工作分支,默认为openstack-create-repo
-dp, --do-push
    [可选] 指定是否执行push到gitee仓库上并提交PR,如果不指定则只会提交到本地的仓库中

为软件仓库创建分支

可以命令使用为openeuleroos repo branch-create软件仓创建分支

  • 为软件创建分支,需要提供分支软件的分支文件或创建特定的软件.csv信息,命名新的分支信息以及新分支的账簿等,以为openstack-nova创建openEuler-21.09仓库仓库就像Gitee:
oos repo branch-create --repo openstack-nova -b openEuler-21.09 protected master -t GITEE_PAT
  • 为软件列表创建多个分支,需要创建分支的软件仓库文件或指定的.csv其他软件仓库名称,新分支信息以及 Gitee 仓库提供的openEul-21.09 分支和openEuler 分支信息-22.03- 多分支类型,并提交LTPR:
oos repo branch-create --repos-file repos.csv -b openEuler-21.09 protected master 
-b openEuler-22.03-LTS protected openEuler-22.03-LTS-Next -t GITEE_PAT --do-push

该命令所支持的参数如下:

-t, --gitee-pat
    [必选] 个人Gitee账户personal access token,可以使用GITEE_PAT环境变量指定
-e, --gitee-email
    [可选] 个人Gitee账户email地址,可使用GITEE_EMAIL指定, 若在Gitee账户公开,可通过Token自动获取
-o, --gitee-org
    [可选] repo所属的gitee组织名称,默认为src-openeuler
-r, --repo
    [可选] 软件仓名,和--repos-file参数二选一
-rf, --repos-file
    [可选] openEuler社区软件仓库名的.csv文件,目前只需要包含`repo_name`一列,和--repo参数二选一
-b, --branches
    [必选] 需要为软件包创建的分支信息,每个分支信息包含:要创建的分支名称,分支类型(一般为protected)和父分支名称,
    可以携带多个-b来批量创建多个分支
--community-path
    [可选] openeuler/community项目本地仓路径
-w, --work-branch
    [可选] 本地工作分支,默认为openstack-create-branch
-dp, --do-push
    [可选] 指定是否执行push到gitee仓库上并提交PR,如果不指定则只会提交到本地的仓库中

为软件仓库分支

可以使用命令为openeuleroos repo branch-delete软件仓删除分支

  • 为软件删除分支,需要删除分支软件列表文件或指定某个.csv软件名称,需要删除分支信息仓库以及Gitee的分支信息等,删除openstack-nova和Gitee分支:
oos repo branch-delete --repo openstack-nova -b openEuler-21.09 -t GITEE_PAT
  • 为软件仓库的多个分支信息需要删除多个分支,需要删除某个分支的软件仓库文件或指定中的.csv软件仓库的名称,需要删除多个分支的名称,认为 repos-21.09 开放Euler.csv分支提交和openEuler-LT-多分支,并以pr2.03-LTS:
oos repo branch-delete --repos-file repos.csv -b openEuler-21.09 -b openEuler-22.03-LTS -t GITEE_PAT --do-push

该命令所支持的参数如下:

-t, --gitee-pat
    [必选] 个人Gitee账户personal access token,可以使用GITEE_PAT环境变量指定
-e, --gitee-email
    [可选] 个人Gitee账户email地址,可使用GITEE_EMAIL指定, 若在Gitee账户公开,可通过Token自动获取
-o, --gitee-org
    [可选] repo所属的gitee组织名称,默认为src-openeuler
-r, --repo
    [可选] 软件仓名,和--repos-file参数二选一
-rf, --repos-file
    [可选] openEuler社区软件仓库名的.csv文件,目前只需要包含`repo_name`一列,和--repo参数二选一
-b, --branch
    [必选] 需要为软件仓删除的分支名称,可以携带多个-b来批量删除多个分支
--community-path
    [可选] openeuler/community项目本地仓路径
-w, --work-branch
    [可选] 本地工作分支,默认为openstack-delete-branch
-dp, --do-push
    [可选] 指定是否执行push到gitee仓库上并提交PR,如果不指定则只会提交到本地的仓库中

数据库事务

可以使用命令将openEuler软件库使用oos repo obs-createOBS工程,如果没有OBS工程,这个命令会同时创建OBS工程

  • 将使用开源软件和OBS工程,以开放堆栈-nova 2 开放电话号码。09:E,需要指定的工程信息,需要重新指定,分支:
oos repo obs-create --repo openstack-nova -b openEuler-22.09 -t GITEE_PAT
  • 将通过 OBS 的工程参数,可以通过 OBS 的工程参数来指定 OBS 的工程参数,如果需要来主线 - 主线

将 openstack-release 发布 2 以 Euler:209: 主线仓,指定名称,分支需要名称以及账号信息:

oos repo obs-create --repo openstack-releases -b openEuler-22.09 --mainline -t GITEE_PAT
  • 将多个软件提交:OBS,将repos.csv中提交软件:open Euler:22.03S:SP1:Epol:Multi-Version OpenStack:Train 项目,
oos repo obs-create --repos-file repos.csv -b Multi-Version_OpenStack-Train_openEuler-22.03-LTS-SP1 -t GITEE_PAT --do-push

该命令所支持的参数如下:

-t, --gitee-pat
    [必选] 个人Gitee账户personal access token,可以使用GITEE_PAT环境变量指定
-e, --gitee-email
    [可选] 个人Gitee账户email地址,可使用GITEE_EMAIL指定, 若在Gitee账户公开,可通过Token自动获取
-r, --repo
    [可选] 软件仓名,和--repos-file参数二选一
-rf, --repos-file
    [可选] openEuler社区软件仓库名的.csv文件,目前只需要包含`repo_name`一列,和--repo参数二选一
-b, --branch
    [必选] 指定要放入OBS工程的对应repo的分支
--mainline
    [可选] 是否将软件包放到对应工程的mainline仓,默认放入Epol仓
--obs-path
    [可选] src-openeuler/obs_meta项目本地仓路径
-w, --work-branch
    [可选] 本地工作分支,默认为openstack-create-branch
-dp, --do-push
    [可选] 指定是否执行push到gitee仓库上并提交PR,如果不指定则只会提交到本地的仓库中

从从OBS工程移除

可以使用命令将openEuleroos repo obs-delete软件仓从OBS工程移除

  • 将个别软件从OB移除,以将python-mox从openEuler:21.09:Epol工程移除工程,需要reponame、分支名以及Gitee账号信息:
oos repo obs-delete --repo python-mox -b openEuler-21.09 -t GITEE_PAT
  • 将多个软件从OB工程移除,以将repos中的软件从openEuler:22.03:LTS:Epol:Multi-Version:OpenStacack:Train工程移除支点S,并提交csv.pr:
oos repo obs-delete --repos-file repos.csv -b Multi-Version_OpenStack-Train_openEuler-22.03-LTS -t GITEE_PAT --do-push

该命令所支持的参数如下:

-t, --gitee-pat
    [必选] 个人Gitee账户personal access token,可以使用GITEE_PAT环境变量指定
-e, --gitee-email
    [可选] 个人Gitee账户email地址,可使用GITEE_EMAIL指定, 若在Gitee账户公开,可通过Token自动获取
-r, --repo
    [可选] 软件仓名,和--repos-file参数二选一
-rf, --repos-file
    [可选] openEuler社区软件仓库名的.csv文件,目前只需要包含`repo_name`一列,和--repo参数二选一
-b, --branch
    [必选] 指定要放入OBS工程的对应repo的分支
--obs-path
    [可选] src-openeuler/obs_meta项目本地仓路径
-w, --work-branch
    [可选] 本地工作分支,默认为openstack-create-branch
-dp, --do-push
    [可选] 指定是否执行push到gitee仓库上并提交PR,如果不指定则只会提交到本地的仓库中

环境和依赖

以上oos spec buildoos spec push命令需要依赖rpmbuild,因此需要安装以下相关工具:

yum install rpm-build rpmdevtools

需要预先准备好rpmbuild命令所需的相关工作目录,执行如下:

rpmdev-setuptree

在执行oos spec buildoos spec push命令时需要指定--build-root参数为rpmbuild工作目录的根目录,默认为当前用户目录下rpmbuild/目录。

另外,为了方便使用该工具,可以Docker快速创建一个打包环境,具体查看docker/目录下的README

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

openstack-sig-tool-1.0.5.tar.gz (175.8 kB 查看哈希

已上传 source