16 Star 29 Fork 116

openEuler / openEuler-Advisor

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MulanPSL-2.0

openEuler-Advisor

1、介绍

openEuler-Advisor 的目标是为 openEuler 制品仓的日常工作提供自动化的巡检和建议。

当前项目中值得关注的内容

1、upstream-info:这个目录中集中了当前openEuler项目制品仓中可见的软件组件的上游信息。

2、advisors:这个目录中提供了一些自动化脚本,其中包括:

2.1、oa_upgradable.py 这个 python 脚本基于upstream-info,用于查询软件包上游社区版本信息及版本推荐。

2.2、simple_update_robot.py 这个 python 脚本用于src-openeuler中软件包自动升级,包括:下载推荐版本源码包、修改spec、本地obs编译、创建PR及issue等。

2.3、check_missing_file.py 这个 python 脚本,对 src-openeuler 中各个仓库进行巡检。如果发现仓库中还不存在 spec 文件,可以直接创建相应仓库中的任务。

2.4、check_source_url.py 这个 python 脚本,对src-openeuler中各个软件包的source地址进行检查,如果地址无效或不正确,自动创建issue提示修改。

2.5、create_repo.py 和 create_repo_with_srpm 这两个 python 脚本提供了批量创建新 repo 的功能。

2.6、which_archived.py 用于检查制品仓软件的上游社区是否已经处于归档状态,便于维护团队及时调整包维护策略。

2.7、check_repeated_repo.py 用于检查src-openeuler中可能重复的软件包。

2.8、psrtool.py 用于查询软件包归属SIG及某个SIG管理的软件包列表信息

2.9、tc_reminder.py 用于自动为openeuler中TC成员创建提示信息

2.10、review_tool.py 用于生成指定软件仓PR的代码审视清单,以规范化PR审视过程。

2.11、issue_report.py 是一款自动生成版本issue及cve管理表格(csv)和结果报告(markdown)的工具,提供基于openeuler版本生成issue和cve清单的功能。

3、prow:存放对接CI/CD框架PROW的脚本

2、后续计划

1、@solarhu 团队正在开发工具,计划提供 openEuler 内所有组件依赖关系的查询。

2、对 simple_update_robot.py 做进一步的优化,提高自动化处理升级的能力。

3、完善 upstream-info,覆盖 openEuler 制品仓中所有软件。并将分散中 openEuler 社区中的各个 YAML 统一到 upstream-info 中,便于后续统一管理。

4、完善 oa_upgradable.py 支持的上游社区代码管理协议,当前发现还需要增加 fossil 的支持。

3、小工具使用说明:

3.1、yaml 文件规范

src-openEuler 仓库中的yaml 文件名称与仓库名称应该保持一致,例如glibc 仓库中存放的yaml 文件名称为"glibc.yaml",文件放在仓库根目录下 yaml 文件中需要人工填写的字段有 version_control、src_repo、tag_prefix、separator,其他内容为自动生成的,不需要填写。

3.1.1、yaml字段介绍

1、version_control:

上游仓库使用的版本控制协议,目前支持svn, git, hg, github, gnome, metacpan, pypi

2、src_repo:

上游仓库的实际地址,通过version_control 和 src_repo 我们可以使用工具下载对应的代码

3、tag_prefix:

上游仓库的tag 中version 前缀,如果是 git 协议,通过 git tag 命令即可显示所有tag。如果上游给的tag 是 v1_0_1, 那么tag_prefix 应该配置为"^v",我们通过匹配tag_prefix即可取出正确的版本信息得到 1_0_1

4、separator:

tag中版本的间隔符,如果 tag是 v1_0_1,然后配置separator 为"_",我们通过代码解析可以得到正确的版本号"1.0.1"

3.1.2、字段的具体要求与示例

1、src_repo:

1) 如果version_control为svn,那src_repo需要 完整的 SVN 仓库地址。例子可以参考 https://gitee.com/openeuler/openEuler-Advisor/blob/master/upstream-info/amanda.yaml

2)如果version_control为git,那src_repo需要 完整的 GIT 仓库地址。例子可以参考 https://gitee.com/openeuler/openEuler-Advisor/blob/master/upstream-info/mdadm.yaml

3)如果version_control为hg,那src_repo需要 完整的 HG 仓库地址。例子可以参考 https://gitee.com/openeuler/openEuler-Advisor/blob/master/upstream-info/nginx.yaml

4)如果version_control为github,那src_repo只需要 proj/repo 即可,不需要完整的URL。例子可以参考 https://gitee.com/openeuler/openEuler-Advisor/blob/master/upstream-info/asciidoc.yaml

5) 如果version_control为gnome,那src_repo只需要 $proj 即可,不需要完整的URL。例子可以参考 https://gitee.com/openeuler/openEuler-Advisor/blob/master/upstream-info/gnome-terminal.yaml, 注意gitlab.gnome.org上很多项目需要访问权限,这些不能作为上游代码仓库。

6)如果version_control为metacpan,那src_repo只需要 $proj 即可,不需要完整的URL。例子可以参考 https://gitee.com/openeuler/openEuler-Advisor/blob/master/upstream-info/perl-Authen-SASL.yaml,注意在metacpan上的命名规范。

7) 如果version_control为pypi,那src_repo只需要 $proj 即可,不需要完整的URL。例子可以参考 https://gitee.com/openeuler/openEuler-Advisor/blob/master/upstream-info/python-apipkg ,注意pypi上的命名规范。

2、tag_prefix:

不同项目的tag规则不同,这里比如tag是v1.1的,那么tag_prefix设置为^v即可。

3、separator:

不同项目的tag中域分割不同,有些是"-",有些是"_",一般默认是".",建议加上双引号

3.1.3、开源软件上游代码仓信息的验证方法

1)常见代码配置管理方法

git,svn,hg都可以在不下载完整代码仓的情况下获取代码仓的信息。方法如下:

- git:

git ls-remote --tags $repo_url

- svn:

svn ls -v $repo_url/tags

- hg:

curl $repo_url/json-tags
2)常见代码托管网站的使用方法

- github

curl https://api.github.com/repos/$user/$repo/release

可以获得json格式完整的release信息清单。但是不是所有项目都支持

curl https://api.github.com/repos/$user/$repo/tags

可以获得json格式完整的tag信息清单。但也不是所有项目都支持,并且已经发现有些项目的这个信息是错误的。

- metacpan

curl https://fastapi.metacpan.org/release/$repo

可以获得json格式的最新版本信息

- pypi

curl https://pypi.org/pypi/$repo/json

可以获得项目最新发布版本的信息

- tag_prefix和tag_pattern的使用

很多软件的tag信息设置是使用了前缀的,比如release-1.2.3,或者v1.2.3。

设置了tag_prefix,就会把所有tag字符串中同样的前缀部分都删除。

比如一个软件同时存在 1.2.3 和 release-1.2.2 两个tag,设置tag_prefix为release-,处理后的tag为1.2.3和1.2.2。

tag_pattern是为了更复杂的形态使用的,不推荐使用。

- separator 的使用

设置separator,可以简单的把这个字符替换成"."。

有些软件的tag分域采用的不是".",这时候设置separator就可以规范化版本tag。

如果软件tag分域本来就是".",这个时候设置separator是不影响结果的。

3.2、advisors介绍

3.2.1 环境配置

a. 必要软件包安装
pip3 install python-rpm-spec (ver>=0.10)
pip3 install PyYAML (ver>=5.3.1)
pip3 install requests (ver>=2.24.0)
yum install rpmdevtools (ver>=8.3)
pip3 install beautifulsoup4 (ver>=4.9.3)
yum install yum-utils (ver>=1.1.31)
yum install libabigail (ver>=1.6)
b. json文件配置
创建json文件:~/.gitee_personal_token.json
json文件格式:{"user":"gitee用户名","access_token":"token密码"}

gitee token密码设置入口:https://gitee.com/profile/personal_access_tokens
c. gitee ssh配置
如果未配置, 请参考:https://gitee.com/help/articles/4181
d. OBS配置
如果未配置, 请参考:https://openeuler.org/zh/docs/20.09/docs/ApplicationDev/%E6%9E%84%E5%BB%BARPM%E5%8C%85.html
e. Python环境配置
如果处于开发态,直接使用该工具,首先需要配置Python环境路径:source ./develop_env.sh

3.2.2 使用说明

a. simple_update_robot.py
单软件包自动升级: python3 simple_update_robot.py -u pkg pkg_name branch_name [-n new_version]
例如: python3 simple_update_robot.py -u pkg snappy master

单软件包手动升级: python3 simple_update_robot.py pkg_name branch_name [-fc] [-d] [-s] [-n new_version] [-b] [-p]
例如: python3 simple_update_robot.py snappy openEuler-20.03-LTS -fc -d -s -n 1.8.1

多软件包仓库升级: python3 simple_update_robot.py -u repo repo_name branch_name
例如: python3 simple_update_robot.py -u repo src-openeuler master

用户可以在本地工作目录配置自动升级yaml文件, 比如: upgrade-example.yaml
repositories:
- name: A-Tune
- name: python-py
- name: python-ply
如果你想为某些软件包指定升级版本,可以配置为:
repositories:
- name: A-Tune
  u_ver: x.y.z
- name: python-py
- name: python-ply
然后通过工具自动升级upgrade-example: python3 simple_update_robot.py -u repo upgrade-example master
b. oa_upgradable.py
查询软件包上游社区信息及版本推荐: python3 oa_upgradable.py pkg_name
例如: python3 oa_upgradable.py glibc
c. issue_report.py
运行环境:python版本 3.8及以上
工具使用:
python3 issue_report.py --milestone "openEuler 20.03-LTS" "openEuler 20.09" --branch "openEuler-21.03" "openEuler-20.09" --output_path /Users/lilu/Downloads 

python3 issue_report.py -m "openEuler 20.03-LTS" "openEuler 20.09" -b "openEuler-21.03" "openEuler-20.09" -o /Users/lilu/Downloads 

> 参数说明:  
	> --milestone: openEuler版本的里程碑,支持输入多个里程碑名。例如:"openEuler-21.03", "openEuler 21.03-RC1"等
	> --branch: src-openEuler仓库下的具体分支名称,支持输入多个分支名。例如:"openEuler-21.03", "openEuler-20.09"等
	> --output_path: 版本管理报告和版本发布报告生成路径

3.2.3 advisors咨询:

如果有其他问题或疑问,请邮件联系:licihua@huawei.com/zwfeng@huawei.com/shanshishi@huawei.com
木兰宽松许可证, 第2版 木兰宽松许可证, 第2版 2020年1月 http://license.coscl.org.cn/MulanPSL2 您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第2版(“本许可证”)的如下条款的约束: 0. 定义 “软件”是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。 “贡献”是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。 “贡献者”是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。 “法人实体”是指提交贡献的机构及其“关联实体”。 “关联实体”是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。 1. 授予版权许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。 2. 授予专利许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。 3. 无商标许可 “本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定的声明义务而必须使用除外。 4. 分发限制 您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。 5. 免责声明与责任限制 “软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。 6. 语言 “本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文版为准。 条款结束 如何将木兰宽松许可证,第2版,应用到您的软件 如果您希望将木兰宽松许可证,第2版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步: 1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字; 2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中; 3, 请将如下声明文本放入每个源文件的头部注释中。 Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details. Mulan Permissive Software License,Version 2 Mulan Permissive Software License,Version 2 (Mulan PSL v2) January 2020 http://license.coscl.org.cn/MulanPSL2 Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v2 (this License) with the following terms and conditions: 0. Definition Software means the program and related documents which are licensed under this License and comprise all Contribution(s). Contribution means the copyrightable work licensed by a particular Contributor under this License. Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License. Legal Entity means the entity making a Contribution and all its Affiliates. Affiliates means entities that control, are controlled by, or are under common control with the acting entity under this License, ‘control’ means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity. 1. Grant of Copyright License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not. 2. Grant of Patent License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed. The patent license shall not apply to any modification of the Contribution, and any other combination which includes the Contribution. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken. 3. No Trademark License No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in Section 4. 4. Distribution Restriction You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software. 5. Disclaimer of Warranty and Limitation of Liability THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO MATTER HOW IT’S CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 6. Language THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL. END OF THE TERMS AND CONDITIONS How to Apply the Mulan Permissive Software License,Version 2 (Mulan PSL v2) to Your Software To apply the Mulan PSL v2 to your work, for easy identification by recipients, you are suggested to complete following three steps: i Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner; ii Create a file named “LICENSE” which contains the whole context of this License in the first directory of your software package; iii Attach the statement to the appropriate annotated syntax at the beginning of each source file. Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details.

简介

Collection of automation tools for easily maintaining openEuler 展开 收起
Python 等 3 种语言
MulanPSL-2.0
取消

发行版 (4)

全部

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/openeuler/openEuler-Advisor.git
git@gitee.com:openeuler/openEuler-Advisor.git
openeuler
openEuler-Advisor
openEuler-Advisor
master

搜索帮助

14c37bed 8189591 565d56ea 8189591