diff --git a/content/zh/docs/userguide/images/Maintainer.jpg b/content/zh/docs/userguide/images/Maintainer.jpg new file mode 100644 index 0000000000000000000000000000000000000000..da0d5f1b5d928eca3a0d63795f59c55331136065 Binary files /dev/null and b/content/zh/docs/userguide/images/Maintainer.jpg differ diff --git a/content/zh/docs/userguide/images/PatchTracking.jpg b/content/zh/docs/userguide/images/PatchTracking.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e12afd6227c18c333f289b9aa71abf608d8058a0 Binary files /dev/null and b/content/zh/docs/userguide/images/PatchTracking.jpg differ diff --git "a/content/zh/docs/userguide/\346\246\202\350\277\260.md" "b/content/zh/docs/userguide/\346\246\202\350\277\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..74490c61e7f085f49758d903630e79fcb1949a00 --- /dev/null +++ "b/content/zh/docs/userguide/\346\246\202\350\277\260.md" @@ -0,0 +1,2 @@ +本文主要介绍在openEuler 发行版本过程中使用到的工具集,主要包含工具的介绍,安装以及使用等方面内容。 + diff --git "a/content/zh/docs/userguide/\350\241\245\344\270\201\345\267\245\345\205\267.md" "b/content/zh/docs/userguide/\350\241\245\344\270\201\345\267\245\345\205\267.md" new file mode 100644 index 0000000000000000000000000000000000000000..5b48e8a7fc7f9076ce4fc8fbb610a3b6ec6fe9ea --- /dev/null +++ "b/content/zh/docs/userguide/\350\241\245\344\270\201\345\267\245\345\205\267.md" @@ -0,0 +1,125 @@ +补丁跟踪 +=== + + +# 简介 + +在 openEuler 发行版开发过程,需要及时更新上游社区各个软件包的最新代码,修改功能 bug 及安全问题,确保发布的 openEuler 发行版尽可能避免缺陷和漏洞。 + +本工具对软件包进行补丁管理,主动监控上游社区提交,自动生成补丁,并自动提交 issue 给对应的 maintainer,同时自动验证补丁基础功能,减少验证工作量支持 maintainer 快速决策。 + +# 架构 + +## CS架构 + +补丁跟踪工具采用 C/S 架构。 + +* 服务端(patch-tracking) :负责执行补丁跟踪任务,包括维护跟踪项,识别上游仓库分支代码变更并形成补丁文件,向 Gitee 提交 issue 及 PR,同时 patch-tracking 提供 RESTful 接口,用于对跟踪项进行增删改查操作。 + +* 客户端:即命令行工具(patch-tracking-cli),通过调用 patch-tracking 的 RESTful 接口,实现对跟踪项的增删改查操作。 + +## 核心流程 + +* 补丁跟踪服务流程 + +**主要步骤:** + +1. 命令行工具写入跟踪项。 +2. 自动从跟踪项配置的上游仓库(例如Github)获取补丁文件。 +3. 创建临时分支,将获取到的补丁文件提交到临时分支。 +4. 自动提交issue到对应项目,并生成关联 issue 的 PR。 + +PatchTracking + +* Maintainer对提交的补丁处理流程 + +**主要步骤:** +1. Maintainer分析临时分支中的补丁文件,判断是否合入。 +2. 执行构建,构建成功后判断是否合入PR。 + +![Maintainer](images/Maintainer.jpg) + +## 数据结构 + +* Tracking表 + +| 序号 | 名称 | 说明 | 类型 | 键 | 允许空 | +|:----:| ----| ----| ----| ----| ----| +| 1 | id | 自增补丁跟踪项序号 | int | - | NO | +| 2 | version_control | 上游SCM的版本控制系统类型 | String | - | NO | +| 3 | scm_repo | 上游SCM仓库地址 | String | - | NO | +| 4 | scm_branch | 上游SCM跟踪分支 | String | - | NO | +| 5 | scm_commit | 上游代码最新处理过的Commit ID | String | - | YES | +| 6 | repo | 包源码在Gitee的仓库地址 | String | Primary | NO | +| 7 | branch | 包源码在Gitee的仓库分支 | String | Primary | NO | +| 8 | enabled | 是否启动跟踪 | Boolean | -| NO | + +* Issue表 + +| 序号 | 名称 | 说明 | 类型 | 键 | 允许空 | +|:----:| ----| ----| ----| ----| ----| +| 1 | issue | issue编号 | String | Primary | NO | +| 2 | repo | 包源码在Gitee的仓库地址 | String | - | NO | +| 3 | branch | 包源码在Gitee的仓库分支 | String | - | NO | + +# 工具安装 + +## 环境要求 + +>* 已安装 Python 3.7及以上版本 +>* 已安装 pip3。 + + +## 安装依赖 + +执行如下指令安装依赖包。 + +```shell script +yum install -y gcc python3-devel openssl-devel +pip3 install flask flask-sqlalchemy flask-apscheduler requests flask_httpauth +pip3 install -I uwsgi +``` + +## 安装工具 + +执行如下指令安装工具(其中”xxx”表示版本号,请用实际情况代替)。 + +```shell script +rpm -ivh patch-tracking-xxx.rpm +``` + +## 配置参数 + +在配置文件中对相应参数进行配置,配置文件路径为 `/etc/patch-tracking/settings.conf`。 + +1. 配置服务监听地址。 + + ``` + LISTEN = "127.0.0.1:5001" + ``` + +2. GitHub Token,用于访问托管在GitHub上游开源软件仓的仓库信息。生成GitHub Token的方法请参考 [Creating a personal access token](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token) 。 + + ``` + GITHUB_ACCESS_TOKEN = "" + ``` + +3. 对于托管在gitee上的需要跟踪的仓库,配置一个有该仓库权限的gitee的token,用于提交patch文件,提交issue,提交PR等操作。 + + ``` + GITEE_ACCESS_TOKEN = "" + ``` + +4. 定时扫描数据库中是否有新增或修改的跟踪项,对扫描到的跟踪项执行获取上游补丁任务,在这里配置扫描的时间间隔,数字单位是秒。 + + ``` + SCAN_DB_INTERVAL = 3600 + ``` + +5. 命令行工具运行过程中,POST接口需要填写进行认证的用户名和口令哈希值。 + + ``` + USER = "admin" + + PASSWORD = "" + ``` diff --git a/content/zh/menu/index.md b/content/zh/menu/index.md index d6780444537daf3f432c737de71cc763c97e8b85..c315218dbb88dbf01d9e1fa35aa755b05a13cd57 100644 --- a/content/zh/menu/index.md +++ b/content/zh/menu/index.md @@ -128,9 +128,13 @@ headless: true - [附录]({{< relref "./docs/A-Tune/附录.md" >}}) -- [应用开发指南]({{< relref "./docs/ApplicationDev/application-development.md" >}}) +- [应用开发指南]({{< relref "./docs/ApplicationDev/application-development.md" >}})userguide - [开发环境准备]({{< relref "./docs/ApplicationDev/开发环境准备.md" >}}) - [使用GCC编译]({{< relref "./docs/ApplicationDev/使用GCC编译.md" >}}) - [使用make编译]({{< relref "./docs/ApplicationDev/使用make编译.md" >}}) - [使用JDK编译]({{< relref "./docs/ApplicationDev/使用JDK编译.md" >}}) - - [构建RPM包]({{< relref "./docs/ApplicationDev/构建RPM包.md" >}}) \ No newline at end of file + - [构建RPM包]({{< relref "./docs/ApplicationDev/构建RPM包.md" >}}) + +- [openEuler工具集用户指南]({{< relref "./docs/userguide/概述.md" >}}) + - [补丁工具]({{< relref "./docs/userguide/补丁工具.md" >}}) + - [包管理工具]({{< relref "./docs/userguide/包管理工具.md" >}}) \ No newline at end of file