diff --git a/deploy/nginx/nginx.conf b/deploy/nginx/nginx.conf index 9f753b72c85cca2c2c924f073ffa3241059456b0..290634bfd10c8f3831c0547c555dd20085df127b 100644 --- a/deploy/nginx/nginx.conf +++ b/deploy/nginx/nginx.conf @@ -165,44 +165,14 @@ http { # proxy_pass https://dsapi.osinfra.cn/; } - location ^~ /zh/docs/24.03_LTS_SP1/css/ { + location ^~ /docs/24.03_LTS_SP1/ { proxy_set_header X-Forwarded-For $http_x_real_ip; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_ssl_protocols TLSv1.3; proxy_ssl_verify off; - proxy_pass http://openeuler-docs-website-stable2-24-03-lts-sp1.openeuler-website-docs:8080/css/; - } - - location ^~ /zh/docs/24.03_LTS_SP1/fonts/ { - proxy_set_header X-Forwarded-For $http_x_real_ip; - proxy_http_version 1.1; - proxy_set_header Connection ""; - proxy_ssl_protocols TLSv1.3; - proxy_ssl_verify off; - - proxy_pass http://openeuler-docs-website-stable2-24-03-lts-sp1.openeuler-website-docs:8080/fonts/; - } - - location ^~ /zh/docs/24.03_LTS_SP1/img/ { - proxy_set_header X-Forwarded-For $http_x_real_ip; - proxy_http_version 1.1; - proxy_set_header Connection ""; - proxy_ssl_protocols TLSv1.3; - proxy_ssl_verify off; - - proxy_pass http://openeuler-docs-website-stable2-24-03-lts-sp1.openeuler-website-docs:8080/img/; - } - - location ^~ /zh/docs/24.03_LTS_SP1/js/ { - proxy_set_header X-Forwarded-For $http_x_real_ip; - proxy_http_version 1.1; - proxy_set_header Connection ""; - proxy_ssl_protocols TLSv1.3; - proxy_ssl_verify off; - - proxy_pass http://openeuler-docs-website-stable2-24-03-lts-sp1.openeuler-website-docs:8080/js/; + proxy_pass http://openeuler-docs-website-stable2-24-03-lts-sp1.openeuler-website-docs:8080/; } location ^~ /zh/docs/24.03_LTS_SP1/ { diff --git a/docs/.vitepress/src/assets/category/docs/icon-gitee.svg b/docs/.vitepress/src/assets/category/docs/icon-gitee.svg new file mode 100644 index 0000000000000000000000000000000000000000..a172b2ab17f5a86d4e8ede006e83ff00e11d903c --- /dev/null +++ b/docs/.vitepress/src/assets/category/docs/icon-gitee.svg @@ -0,0 +1,4 @@ + + + + diff --git a/docs/.vitepress/src/components/DocBugDialog.vue b/docs/.vitepress/src/components/DocBugDialog.vue index 181d586e8f834023dfedcde0f7f4dbebc9e82201..cc5ea00c2d40f2ac89ef4780ef0193cac49703a2 100644 --- a/docs/.vitepress/src/components/DocBugDialog.vue +++ b/docs/.vitepress/src/components/DocBugDialog.vue @@ -250,6 +250,7 @@ const change = (visible: boolean) => { diff --git "a/docs/zh/Contribute/MarkDown\345\270\270\347\224\250\350\257\255\346\263\225\345\217\202\350\200\203.md" "b/docs/zh/Contribute/MarkDown\345\270\270\347\224\250\350\257\255\346\263\225\345\217\202\350\200\203.md" deleted file mode 100644 index 365c438117746295e86131bec8cfc17fe963bd8c..0000000000000000000000000000000000000000 --- "a/docs/zh/Contribute/MarkDown\345\270\270\347\224\250\350\257\255\346\263\225\345\217\202\350\200\203.md" +++ /dev/null @@ -1,140 +0,0 @@ -# MarkDown常用语法参考 - -## 标题 - -使用\#号标记:使用 \# 号可表示 1-6 级标题,一级标题对应一个 \# 号,二级标题对应两个 \# 号,以此类推。 - -``` -# 一级标题 -## 二级标题 -### 三级标题 -#### 四级标题 -##### 五级标题 -###### 六级标题 -``` - -## 字体 - -- 斜体:使用一个星号(\*)表示斜体。 - - ``` - *斜体文本* - ``` - -- 粗体:使用两个星号(\*\*)表示粗体。 - - ``` - **粗体文本** - ``` - -- 粗斜体:使用3个星号(\*\*\*)表示粗斜体。 - - ``` - ***粗斜体文本*** - ``` - - -## 列表 - -- 无序列表:无序列表使用星号(**\***)、加号(**+**)或是减号(**-**)作为列表标记,这些标记后面要添加一个空格,然后再填写内容。同一个无序列表,建议使用同一个符号。 - - ``` - * 第一项 - * 第二项 - * 第三项 - - + 第一项 - + 第二项 - + 第三项 - - - - 第一项 - - 第二项 - - 第三项 - ``` - - -- 有序列表:有序列表使用数字并加上 **.** 号来表示。 - - ``` - 1. 第一项 - 2. 第二项 - 3. 第三项 - ``` - - -- 嵌套列表:列表嵌套只需在子列表中的选项前面添加四个空格即可。 - - ``` - 1. 第一项: - - 第一项嵌套的第一个元素 - - 第一项嵌套的第二个元素 - 2. 第二项: - - 第二项嵌套的第一个元素 - - 第二项嵌套的第二个元素 - ``` - - -## 引用 - -Markdown 区块引用是在段落开头使用 **\>** 符号 ,然后后面紧跟一个**空格**符号。 - -``` -> 说明: -``` - -## 代码 - -- 行间代码:如果是段落上的一个函数或片段的代码可以用反引号把它包起来(**\`**)。 - -``` -`printf()` 函数 -``` - -- 代码块:可以用 **\`\`\`** 包裹一段代码。 - -``` -``` -select * from table; -``` -``` - -## 链接 - -链接使用方法如下: - -``` -[链接名称](链接地址) -``` - -## 图片 - -图片使用方法如下: - -``` -![alt 属性文本](图片地址) - -![alt 属性文本](图片地址 "可选标题") -``` - -- 开头一个感叹号 (!)。 -- 接着一个方括号,里面放上图片的替代文字。 -- 接着一个普通括号,里面放上图片的网址,最后还可以用引号包住并加上选择性的 'title' 属性的文字。 - -## 表格 - -Markdown 制作表格使用 **|** 来分隔不同的单元格,使用 **-** 来分隔表头和其他行。语法格式如下: - -``` -| 表头 | 表头 | -| ---- | ---- | -| 单元格 | 单元格 | -| 单元格 | 单元格 | -``` - -我们可以设置表格的对齐方式: - -- -: 设置内容和标题栏居右对齐。 -- :- 设置内容和标题栏居左对齐。 -- :-: 设置内容和标题栏居中对齐。 - diff --git a/docs/zh/Contribute/_menu.md b/docs/zh/Contribute/_menu.md index d57839bbf4e2451330e51ba7fe6539f9ccfb2ef1..15a81c3b09f9c4c95be360a14d3570f7fc4b3bbc 100644 --- a/docs/zh/Contribute/_menu.md +++ b/docs/zh/Contribute/_menu.md @@ -2,24 +2,14 @@ label: '贡献指南' ismanual: 'Y' children: - - label: '文档贡献指导' - children: - - label: '文档开发流程' - href: './contribution_process.md' - - label: '文档仓库目录结构说明' - href: './directory_structure_introductory.md' - - label: 'menu文件写作规范' - href: './menu_specifications.md' - - label: '英文文档贡献指导' - href: './english_doc_contribute.md' - - label: '文档写作规范' + - label: '概述' + href: './directory_structure_introductory.md' + - label: '快速入门' + href: './contribution_process.md' + - label: '教程' children: - label: '文档写作规范' href: './documentation_writing_specifications.md' - - label: 'MarkDown常用语法参考' - href: './MarkDown常用语法参考.md' - - label: 'markdownlint检查规则' - href: './markdownlint检查规则.md' - - label: 'markdownlint错误修复工具' - href: './markdownlint错误修复工具.md' + - label: '文档发布流水线门禁' + href: './ci_rules.md' --- \ No newline at end of file diff --git a/docs/zh/Contribute/ci_rules.md b/docs/zh/Contribute/ci_rules.md new file mode 100644 index 0000000000000000000000000000000000000000..4d59ad3ae1785cbbfa294498da2cded385c0efbb --- /dev/null +++ b/docs/zh/Contribute/ci_rules.md @@ -0,0 +1,83 @@ +# 文档开发流水线门禁 + +## markdownlint + +markdownlint 是一款检查 markdown 文件格式的工具。markdownlint规则介绍及本仓规则设置,请参考[检查规则](./markdownlint_rules.md)。可使用[工具](./markdownlint_tools.md)对markdownlint 进行批量修复。 + +> 说明: +> 开发者需要确保提交的文档已修复所有markdownlint错误,否则CI门禁报错,将无法合入。 + +## 标签闭合 + +链接、表格等内容元素建议使用markdown语法书写。如果需要使用HTML样式,请确保标签闭合。 + +错误示例 + + ```yaml + + + + + +
Header 1 + Header 2
Data 1 + Data 2
+ ``` + +正确示例 + + ```yaml + + + + + + + + + +
Header 1Header 2
Data 1Data 2
+ ``` + +> 说明:开发者需要确保提交的文档中HTML 标签已全部闭合,否则CI门禁报错,将无法合入。 + +## 引用链接 + +图片、网站、手册链接请检查路径地址是否正确。 + +反例 + +- 失效的网站链接 + + ```text + [错误官网](https://doc.openeuler.org/zh/) + ``` + +- 错误的相对路径 + + ```text + [写作规范](../写作规范.md) + ``` + +​ +正例 + +- 网站链接 + + ```text + [错误官网](https://docs.openeuler.org/zh/) + ``` + +- 相对路径 + + ```text + [写作规范](./contribute/写作规范.md) + ``` + +>说明:开发者需要确保提交的文档中链接有效,否则CI门禁报错,将无法合入。 + +## 静态检查 + +新增文档时,为了能在openEuler 文档官网展示,需要在_menu.md文件增加对应文档位置。 + +>说明:开发者需要确保提交新增文档同步提交了_menu.md文件修改,否则CI门禁报错,将无法合入。 diff --git a/docs/zh/Contribute/contribution_process.md b/docs/zh/Contribute/contribution_process.md index d283502d7e2b813cfd739493a39efdf45cf7148b..8fc3b42cbe24fcaade778d92e2c064eb97aa0abd 100644 --- a/docs/zh/Contribute/contribution_process.md +++ b/docs/zh/Contribute/contribution_process.md @@ -1,69 +1,51 @@ -# 文档开发流程 +# 快速入门 ## 概述 -本文档围绕新增文档,修改文档,删除文档三个场景,为开发者明确文档开发流程。本文档中的示例均以中文文档为例,英文文档逻辑类似。 +本文档围绕新增文档,修改文档,删除文档三个任务场景,为开发者明确文档开发流程。开发需要具备以下经验和技能: -若需了解更详细的文档开发规范,请参考[文档仓库目录结构说明](./directory_structure_introductory.md),[menu文件写作规范](./menu_specifications.md)。英文文档贡献指导请详见[英文文档贡献指导](./english_doc_contribute.md)。若需使用 Git 提交 PR 以及 issue 的具体指导,请详见[openEuler开源社区贡献指南](./openEuler开源社区贡献指南.md)。 +- 了解 Git 基本操作 +- 了解 markdown 写作规范 +- 了解 openEuler 文档仓组织结构 ## 新增文档 -### 文档发布在文档中心 +若开发者希望在服务器场景下新增《升级指南》,可参考以下操作步骤: -1. 克隆文档仓到本地 +1. 创建存放文件夹 - 要新增文档,开发者需要先明确存放相关内容的文档仓库是哪个。一般来讲,要确定新增内容该合并到哪个仓库,可以先看相关特性由哪个sig组负责维护,对应的sig组名-docs,就是存放新增内容的仓库。例如,《OpenStack用户指南》存放在 [openstack-docs](https://gitee.com/openeuler/openstack-docs) 仓。 + 确定《升级指南》的[存放位置](./directory_structure_introductory.md#文档存放地址),在此处新建一个文件夹,用于存放该指南下所有的`.md`文件。 - 如果是与系统安装升级或管理员指南相关的内容,属于通用配置,在 [docs](https://gitee.com/openeuler/docs) 仓统一维护。 - -2. 在合适的目录下新建文档 - - 文档仓克隆完成后,要先在仓库里找到合适的目录,然后在该目录下新增文档。具体目录可根据该新增文档在文档中心呈现的目录层级来找。 - - 例如,如果开发者想在《安装指南》中新增一个章节介绍多种安装方式,则需要在 [docs](https://gitee.com/openeuler/docs) 仓的 [Server > InstallationUpgrade > Installation](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/InstallationUpgrade/Installation) 目录下新建 `Installation-Modes.md`。因为《安装指南》相关内容属于通用文档,因此在docs仓统一进行维护。并且《安装指南》呈现在文档中心的服务器场景(Server)下的安装升级(InstallationUpgrade)类别下。 - - ![image](figures/安装指南显示.jpg) - ![image](figures/安装指南gitee.jpg) - - 如果开发者想在《OpenStack用户指南》中新增一个章节介绍devstack,则需要在 [openstack-docs](https://gitee.com/openeuler/openstack-docs) 仓里新建 `devstack.md`。因为 OpenStack 相关特性是由 openstack SIG 维护,并且 openstack-docs 仓库仅维护一本手册,所以无需在细分目录。 - - ![image](figures/openstackgitee.jpg) - - 如果开发者不只是想在现有手册中新增一个章节,而是想新增一本完整的手册,则需要新建一个文件夹用来存放该手册下所有的章节。例如,如果开发者想在服务器场景(Server)下的安装升级(InstallationUpgrade)类别下,新增《升级指南》,则需要在 [docs](https://gitee.com/openeuler/docs) 仓的 [Server > InstallationUpgrade](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/InstallationUpgrade/) 目录下新建 `Upgrade`。 - - ![image](figures/升级指南显示.jpg) - ![image](figures/升级指南gitee.jpg) + ```text + ├─docs + | ├─en + | └─zh + | └─Server + | └─InstallationUpgrade + | ├─Installation + | └─Upgrade + | ├─openEuler_22.03_LTS_upgrade_and_downgrade.md + | └─_menu.md + ``` -3. 关联章节至对应手册 +2. 生成`_menu.md`文件 - 新建文档后,为确保新增章节能正确显示,需在`_menu.md`文件里添加对该文档的引用。例如,开发者在 [openstack-docs](https://gitee.com/openeuler/openstack-docs) 仓里新建`devstack.md`后,需要在 [_menu.md](https://gitee.com/openeuler/openstack-docs/blob/openEuler-25.03/docs/zh/_menu.md) 中添加对`devstack.md`文档的引用。该`_menu.md`通常在新增文档的同级目录下存放。 + 在步骤 1 所创建的文件夹中,新建一个`_menu.md`文件,以维护手册内各章节的展示逻辑。 ```yaml --- - label: 'OpenStack 用户手册' + label: '升级指南' + ismanual: 'Y' + description: '升级 openEuler 操作系统' children: - - label: '安装指导' - children: - - label: 'devstack' - href: './install/devstack.md' - - label: 'antelope' - href: './install/antelope.md' - - label: '操作及管理指导' - children: - - label: '安全指南' - href: './security/security-guide.md' + - label: '升降级指导' + href: './openEuler_22.03_LTS_upgrade_and_downgrade.md' --- ``` - 如果开发者不只是想在现有手册中新增一个章节,而是想新增一本完整的手册,则需要为该手册创建一个`_menu.md`文件。 - -4. 关联手册至对应场景 - - 如果是新增一本完整手册的场景,除了上述步骤,还需要在对应场景的`_menu.md`文件中添加对手册的引用。换句话说,当开发者创建了新手册的`_menu.md`文件后,必须把这个文件的引用,添加到某个场景的`_menu.md`文件中,这样才能让新手册在相应场景中得以展示。 - - 下面给出两个示例进行说明,示例一: +3. 关联手册至对应场景 - 如果开发者想在服务器场景下新增《升级指南》,则需要对 [docs](https://gitee.com/openeuler/docs) 仓 Server 目录下的 [_menu.md](https://gitee.com/openeuler/docs/blob/25.03/docs/zh/Server/_menu.md) 文件进行修改: + 在服务器场景的 [_menu.md](https://gitee.com/openeuler/docs/blob/25.03/docs/zh/Server/_menu.md) 文件中,添加对《升级指南》的引用。 ```yaml --- @@ -82,131 +64,73 @@ --- ``` - 如果开发者想在虚拟化场景下新增《OpenStack用户指南》,则需要对 [docs](https://gitee.com/openeuler/docs) 仓 Virtualization 目录下的 [_menu.md](https://gitee.com/openeuler/docs/blob/25.03/docs/zh/Virtualization/_menu.md) 文件进行修改: - - ```yaml - --- - label: '虚拟化' - children: - - label: '虚拟化平台' - children: - - reference: './Virtualization/_menu.md' - - reference: './StratoVirt/_menu.md' - - reference: 'https://gitee.com/openeuler/openstack-docs/blob/openEuler-25.03/docs/zh/_menu.md' - --- - ``` - -5. 发布在文档中心 - - 提交文档修改的 PR 后,doc SIG maintainer和各特性 SIG maintainer 会进行检视。只有当他们都审核通过,PR 才能合入。每晚8点至10点系统会自动构建,构建完成后,修改内容就会在官网显示。 - -### 文档不在文档中心发布 - -如果开发者所创作的文档内容,暂时不适合推广或尚不成熟,目前无需发布在文档中心,也可先提交至 [docs](https://gitee.com/openeuler/docs) 仓的 [archive](https://gitee.com/openeuler/docs/tree/25.03/archive) 目录中。等到需要发布时,再将其移至合适的目录。这类文档同样需要遵循写作规范。 - -> 注意:提交至 archive 目录的文档,按计划未来会发布到文档中心,若长时间无人维护,将会被清理。 - ## 修改文档 文档修改分为以下三种情况: -- 若需对现有文档内容进行修改,则需要找到文档的存放位置,并对其内容进行相应调整。 -- 若需对手册内各章节的目录结构进行修改,则需要找到对应手册的`_menu.md`,并对其内容进行相应调整。 -- 若需对文档中心各场景下的呈现结构进行修改,则需要找到对应场景的`_menu.md`,并对其内容进行相应调整。 - -关于如何找到文档和`_menu.md`文件的存放位置,在[新增文档](#新增文档)章节有比较详细的介绍。 +1. 现有文档内容修改:找到文档的[存放位置](./directory_structure_introductory.md#文档存放地址),并对其内容进行相应调整。 -下面给出两个示例进行说明,示例一: +2. 手册章节目录结构调整:找到手册的`_menu.md`文件并修改。 -![image](figures/安装在服务器.jpg) + 如果开发者要删除《OpenStack用户指南》中的 devstack 章节,首先要删除此章节对应的`.md`文件([devstack.md](https://gitee.com/openeuler/openstack-docs/blob/openEuler-25.03/docs/zh/install/devstack.md)),并在《OpenStack用户指南》的 [_menu.md](https://gitee.com/openeuler/openstack-docs/blob/openEuler-25.03/docs/zh/_menu.md) 下,删除对`devstack.md`文档的引用: -如图所示,当前《安装指南》的章节设置中,“安装在服务器”作为首个章节显示。若开发者希望将“安装在树莓派”置于“安装在服务器”之上,需找到《安装指南》对应的 [menu.md](https://gitee.com/openeuler/docs/blob/25.03/docs/zh/Server/InstallationUpgrade/Installation/_menu.md) 文件,并对其进行修改: - -```yaml ---- -label: '安装指南' -ismanual: 'Y' -description: '安装 openEuler 操作系统' -children: - - label: '安装在树莓派' - href: './install-pi.md' - children: - - label: '安装准备' - href: './Installation-Preparations1.md' - - label: '安装在服务器' - href: './install-server.md' + ```yaml + --- + label: 'OpenStack 用户手册' children: - - label: '安装准备' - href: './installation-preparations.md' ---- -``` - -示例二: + - label: '安装指导' + children: + - label: 'devstack' + href: './install/devstack.md' + - label: 'antelope'markdown + href: './install/antelope.md' + --- + ``` -![image](figures/安装升级.jpg) +3. 手册在文档中心呈现位置修改:找到场景的`_menu.md`并修改。 -如图所示,当前在服务器场景下,《安装指南》显示在《升级指南》之前。若开发者希望将《升级指南》调整至前面显示,需找到服务器场景对应的 [menu.md](https://gitee.com/openeuler/docs/blob/25.03/docs/zh/Server/_menu.md) 文件并加以修改: + 在服务器场景下,若开发者希望将《升级指南》调整至《安装指南》前面显示,需找到服务器场景的 [menu.md](https://gitee.com/openeuler/docs/blob/25.03/docs/zh/Server/_menu.md) 文件并加以修改: -```yaml ---- -label: '服务器' -children: - - label: '快速入门' - children: - - reference: './Quickstart/Quickstart/_menu.md' - - label: '安装升级' - children: - - reference: './InstallationUpgrade/Upgrade/_menu.md' - - reference: './InstallationUpgrade/Installation/_menu.md' - - label: '系统管理' + ```yaml + --- + label: '服务器' children: - - reference: './Administration/Administrator/_menu.md' - - reference: './Administration/sysMaster/_menu.md' - - reference: './Administration/CompaCommand/_menu.md' ---- -``` + - label: '快速入门' + children: + - reference: './Quickstart/Quickstart/_menu.md' + - label: '安装升级' + children: + - reference: './InstallationUpgrade/Upgrade/_menu.md' + - reference: './InstallationUpgrade/Installation/_menu.md' + - label: '系统管理' + children: + - reference: './Administration/Administrator/_menu.md' + - reference: './Administration/sysMaster/_menu.md' + - reference: './Administration/CompaCommand/_menu.md' + --- + ``` ## 删除文档 -删除文档的操作步骤如下: - -1. 首先,确定想要删除的文档存放在何处,找到后将其删除。 -2. 接着,找到对应手册的`_menu.md`文件,在其中去掉对已删除章节的引用。 -3. 若开发者不只删除某本手册中的部分章节,而是要删除一整本手册,除上述操作外,还需找到对应场景的`_menu.md`文件,在里面删除对手册的引用。 +若开发者希望在虚拟化场景下删除《虚拟化用户指南》,可参考以下操作步骤: -关于如何找到文档和`_menu`文件的存放位置,在[新增文档](#新增文档)章节有比较详细的介绍。 +1. 首先,确定想要删除手册的[存放位置](./directory_structure_introductory.md#文档存放地址),将其删除。 -下面给出示例进行说明: +2. 在虚拟化场景的 [_menu.md](https://gitee.com/openeuler/docs/blob/25.03/docs/zh/Virtualization/_menu.md) 文件中,删除对《OpenStack 用户手册》的引用。 -![image](figures/安装升级.jpg) + ```yaml + --- + label: '虚拟化' + children: + - label: '虚拟化平台' + children: + - reference: './VirtualizationPlatform/Virtualization/_menu.md' + - reference: './VirtualizationPlatform/StratoVirt/_menu.md' + --- + ``` -如图所示,当前在虚拟化场景中,《OpenStack用户指南》设有专门章节对 devstack 进行介绍。 +## 文档暂不在文档中心发布 -如果开发者要删除《OpenStack用户指南》中的 devstack 章节,首先要删除此章节对应的`.md`文件([devstack.md](https://gitee.com/openeuler/openstack-docs/blob/openEuler-25.03/docs/zh/install/devstack.md)),并在《OpenStack用户指南》的 [_menu.md](https://gitee.com/openeuler/openstack-docs/blob/openEuler-25.03/docs/zh/_menu.md) 下,删除对`devstack.md`文档的引用: +如果开发者所创作的文档内容,暂时不适合推广或尚不成熟,目前无需发布在文档中心,可在文档仓的 [archive](https://gitee.com/openeuler/docs/tree/25.03/archive) 目录中进行增删改。等到需要发布时,再将其移至合适的目录,注意这类文档同样需要遵循写作规范。 -```yaml ---- -label: 'OpenStack 用户手册' -children: - - label: '安装指导' - children: - - label: 'devstack' - href: './install/devstack.md' - - label: 'antelope'markdown - href: './install/antelope.md' ---- -``` - -如果开发者要将《OpenStack用户指南》全部删除,除了要删除与该手册相关的全部`.md`文件外,还需要在虚拟化场景的 [_menu.md](https://gitee.com/openeuler/docs/blob/25.03/docs/zh/Virtualization/_menu.md) 文件中,删除对《OpenStack 用户手册》的引用。 - -```yaml ---- -label: '虚拟化' -children: - - label: '虚拟化平台' - children: - - reference: './VirtualizationPlatform/Virtualization/_menu.md' - - reference: './VirtualizationPlatform/StratoVirt/_menu.md' - - reference: 'https://gitee.com/openeuler/openstack-docs/blob/openEuler-25.03/docs/zh/_menu.md' ---- -``` +> 注意:提交至 archive 目录的文档,按计划未来会发布到文档中心,若长时间无人维护,将会被清理。 diff --git a/docs/zh/Contribute/directory_structure_introductory.md b/docs/zh/Contribute/directory_structure_introductory.md index 283dd1e6ec0ce1fd45667b4c7166492b32b6a44d..cbf7f21261249f02c5d93cbab59862ba2c435920 100644 --- a/docs/zh/Contribute/directory_structure_introductory.md +++ b/docs/zh/Contribute/directory_structure_introductory.md @@ -1,16 +1,109 @@ -# 文档仓目录结构 +# 概述 -## 概述 +## 介绍 -在 openEuler/docs 仓和 openEuler/SIG组名-docs 仓中,docs 目录内存放的内容将展示于官网,其目录结构依据官网呈现的目录层级进行设置。docs 目录下设有 zh 和 en 两个子目录,分别用于存放中文和英文文档。接下来,我们以中文目录为例进行说明,英文目录的结构和操作逻辑与之相同。 +openEuler的文档仓库包含 openEuler/docs 仓以及 openEuler/各SIG组名-docs 仓。基础特性文档,如发行说明、管理员指南等,均在 docs 仓集中维护。而增量特性文档,例如 A-Tune 用户指南、oeAware 用户指南等,则依据特性所属的 SIG 组,分别存放在各 SIG 组的 docs 仓内。 -在文档仓中,除docs目录外,还设有Archive目录,该目录专门用于存放无需在官网展示的存档文档。 +![image](figures/文档仓总览.png) -## 场景 +在文档仓中,docs 目录下的内容会展示于官网,其下设有 zh 和 en 两个子目录,分别用以存放中文文档与英文文档,文档目录结构严格参照官网呈现的目录层级规划设置。此外,文档仓还设有archive目录,用来存放暂不适合推广,或尚不成熟的文档。待文档完善且满足发布需求时,再将其移至 docs 目录,以便在官网展示。 -文档中心有五个业务场景,服务器、虚拟化、云原生、边缘计算和嵌入式,分别对应 docs 仓内 docs/zh 目录下的 Server、Virtualization、Cloud、EdgeComputing 和 Embedded 子目录,工具模块对应 Tools 子目录。 +```text +├─archive +├─docs +│ ├─en +│ └─zh +``` + +## 文档存放地址 + +| 场景| 类别 | 手册 | 存放地址 | +|----|---------|-------|-------| +| 服务器 | 发行说明 | 发行说明 | [docs/zh/Server/Releasenotes/Releasenotes](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Releasenotes/Releasenotes) | +| | 快速入门 | 快速入门 | [docs/zh/Server/Quickstart/Quickstart](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Quickstart/Quickstart) | +| | 安装升级 | 安装指南 | [docs/zh/Server/InstallationUpgrade/Installation](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/InstallationUpgrade/Installation) | +| | | 升级指南 | [docs/zh/Server/InstallationUpgrade/Upgrade](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/InstallationUpgrade/Upgrade) | +| | 系统运维 | A-Ops用户指南 | [docs/zh/Server/Maintenance/A-Ops](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Maintenance/A-Ops) | +| | | gala用户指南 | [docs/zh/Server/Maintenance/Gala](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Maintenance/Gala) | +| | | sysmonitor用户指南 | [docs/zh/Server/Maintenance/sysmonitor](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Maintenance/sysmonitor) | +| | | 内核热升级指南 | [docs/zh/Server/Maintenance/KernelLiveUpgrade](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Maintenance/KernelLiveUpgrade) | +| | | SysCare用户指南| [docs/zh/Server/Maintenance/SysCare](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Maintenance/SysCare) | +| | | 常用技能 | [docs/zh/Server/Maintenance/CommonSkills](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Maintenance/CommonSkills) | +| | | 常用定位定界工具 | [docs/zh/Server/Maintenance/CommonTools](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Maintenance/CommonTools) | +| | | 故障应急处理 | [docs/zh/Server/Maintenance/Troubleshooting](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Maintenance/Troubleshooting) | +| | 安全 | 安全加固指南 | [docs/zh/Server/Security/SecHarden](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Security/SecHarden) | +| | | 可信计算 | [docs/zh/Server/Security/TrustedComputing](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Security/TrustedComputing) | +| | | secGear开发指南 | [docs/zh/Server/Security/secGear](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Security/secGear) | +| | | CVE-ease设计指南 | [docs/zh/Server/Security/CVE-ease](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Security/CVE-ease) | +| | | 证书签名 | [docs/zh/Server/Security/CertSignature](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Security/CertSignature) | +| | | SBOM用户指南 | [docs/zh/Server/Security/Sbom](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Security/Sbom) | +| | | 国密 | [docs/zh/Server/Security/ShangMi](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Security/ShangMi) | +| | 内存与存储 | 配置和管理逻辑卷 | [docs/zh/Server/MemoryandStorage/lvm](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/MemoryandStorage/lvm) | +| | | etmem用户指南 | [docs/zh/Server/MemoryandStorage/etmem](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/MemoryandStorage/etmem) | +| | | GMEM用户指南 | [docs/zh/Server/MemoryandStorage/GMEM](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/MemoryandStorage/GMEM) | +| | | HSAK开发指南 | [docs/zh/Server/MemoryandStorage/HSAK](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/MemoryandStorage/HSAK) | +| | 网络 | 配置网络 | [docs/zh/Server/Network/NetworConfig](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Network/NetworConfig) | +| | | Gazelle用户指南 | [docs/zh/Server/Network/Gazelle](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Network/Gazelle) | +| | 性能调优 | 系统资源与性能 | [docs/zh/Server/Performance/Overall/systemResource](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Performance/Overall/systemResource) | +| | | oeAware用户指南 | [docs/zh/Server/Performance/TuningFramework/oeAware](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Performance/TuningFramework/oeAware) | +| | | sysBoost用户指南 | [docs/zh/Server/Performance/CPUOptimization/sysBoost](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Performance/CPUOptimization/sysBoost) | +| | | 使用KAE加速引擎 | [docs/zh/Server/Performance/CPUOptimization/KAE](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Performance/CPUOptimization/KAE) | +| | | A-Tune用户指南 | [docs/zh/Server/Performance/SystemOptimization/A-Tune](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Performance/SystemOptimization/A-Tune) | +| | 应用开发 | 应用开发指南 | [docs/zh/Server/Development/ApplicationDev](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Development/ApplicationDev) | +| | | GCC用户指南 | [docs/zh/Server/Development/GCC](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Development/GCC) | +| | HA高可用 | HA用户指南 | [docs/zh/Server/HighAvailability/HA](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/HighAvailability/HA) | +| | 多样性算力 | 直连聚合用户指南| [docs/zh/Server/DiversifiedComputing/DPUOffload](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/DiversifiedComputing/DPUOffload) | +| | | DPU-OS | [docs/zh/Server/DiversifiedComputing/DPU-OS](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/DiversifiedComputing/DPU-OS) | +| 虚拟化 | 虚拟化平台 | 虚拟化用户指南 | [docs/zh/Virtualization/VirtualizationPlatform/Virtualization](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Virtualization/VirtualizationPlatform/Virtualization) | +| | | StratoVirt用户指南 | [docs/zh/Virtualization/VirtualizationPlatform/StratoVirt](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Virtualization/VirtualizationPlatform/StratoVirt) | +| | | OpenStack用户手册 | [openstack-docs/docs/zh](https://gitee.com/openeuler/openstack-docs/tree/openEuler-25.03/docs/zh)| +| 云原生 | 容器引擎 | iSula容器引擎 | [docs/zh/Cloud/ContainerEngine/iSulaContainerEngine](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Cloud/ContainerEngine/iSulaContainerEngine) | +| | | Docker容器 | [docs/zh/Cloud/ContainerEngine/DockerEngine](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Cloud/ContainerEngine/DockerEngine) | +| | 容器形态 | 安全容器 | [docs/zh/Cloud/ContainerForm/SecureContainer](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Cloud/ContainerForm/SecureContainer) | +| | | 系统容器 | [docs/zh/Cloud/ContainerForm/SystemContainer](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Cloud/ContainerForm/SystemContainer) | +| | 容器运行时 | Kuasar多沙箱容器运行时 | [docs/zh/Cloud/ContainerRuntime/Kuasar](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Cloud/ContainerRuntime/Kuasar) | +| | 容器镜像构建工具 | 容器镜像构建 | [docs/zh/Cloud/ImageBuilder/isula-build](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Cloud/ImageBuilder/isula-build) | +| | 云原生操作系统 | 容器OS升级用户指南 | [docs/zh/Cloud/KubeOS/KubeOS](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Cloud/KubeOS/KubeOS) | +| | 云底座操作系统 | NestOS用户指南 | [docs/zh/Cloud/NestOS/NestOS](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Cloud/NestOS/NestOS) | +| | 混合部署 | 云原生混合部署rubik用户指南 | [docs/zh/Cloud/HybridDeployment/rubik](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Cloud/HybridDeployment/rubik) | +| | | oncn-bwm用户指南 | [docs/zh/Cloud/HybridDeployment/oncn-bwm](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Cloud/HybridDeployment/oncn-bwm)| +| | 集群部署 | Kubernetes集群部署指南 | [docs/zh/Cloud/ClusterDeployment/Kubernetes](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Cloud/ClusterDeployment/Kubernetes) | +| | | iSulad+k8s集群部署指南 | [docs/zh/Cloud/ClusterDeployment/iSulad+k8s](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Cloud/ClusterDeployment/iSulad+k8s) | +| | 服务网格 | Kmesh用户指南 | [docs/zh/Cloud/Kmesh/Kmesh](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Cloud/Kmesh/Kmesh) | +| 边缘计算 | | KubeEdge部署指南 | [docs/zh/EdgeComputing/KubeEdge](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/EdgeComputing/KubeEdge) | +| | | K3s部署指南 | [docs/zh/EdgeComputing/K3s](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/EdgeComputing/K3s) | +| 嵌入式 | | openEuler Embedded用户指南 | [yocto-meta-openeuler/docs](https://gitee.com/openeuler/yocto-meta-openeuler/tree/master/docs) | +| | | UniProton用户指南 | [docs/zh/Embedded/UniProton](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Embedded/UniProton) | +| 社区工具 | 镜像构建 | isocut使用指南 | [docs/zh/Tools/CommunityTools/ImageCustom/isocut](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Tools/CommunityTools/ImageCustom/isocut) | +| | | imageTailor使用指南 | [docs/zh/Tools/CommunityTools/ImageCustom/imageTailor](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Tools/CommunityTools/ImageCustom/imageTailor) | +| | 编译 | GCC用户指南 | [docs/zh/Server/Development/GCC](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Development/GCC) | +| | 性能优化 | A-Tune用户指南 | [docs/zh/Server/Performance/SystemOptimization/A-Tune](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Performance/SystemOptimization/A-Tune) | +| | | oeAware用户指南 | [docs/zh/Server/Performance/TuningFramework/oeAware](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Performance/TuningFramework/oeAware) | +| | 迁移 | Migration-tools用户指南 | [docs/zh/Tools/CommunityTools/Migration/migration-tools](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Tools/CommunityTools/Migration/migration-tools) | +| | 虚拟化 | EulerLauncher用户指南 | [docs/zh/Tools/CommunityTools/Virtualization/EulerLauncher](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Tools/CommunityTools/Virtualization/EulerLauncher) | +| | epkg软件包 | epkg包管理器使用指南 | [docs/zh/Tools/CommunityTools/epkg](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Tools/CommunityTools/epkg) | +| | | autopkg用户指南 | [docs/zh/Tools/CommunityTools/epkg/autopkg](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Tools/CommunityTools/epkg/autopkg) | +| 社区服务 | 源码管理 | patch-tracking | [docs/zh/Tools/DevOps/CodeManage/patch-tracking](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Tools/DevOps/CodeManage/patch-tracking) | +| | 包管理 | pkgship | [docs/zh/Tools/DevOps/packageManage/pkgship](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Tools/DevOps/packageManage/pkgship) | +| AI | | openEuler Copilot System | [docs/zh/Tools/AI/openEuler_Copilot_System](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Tools/AI/openEuler_Copilot_System) | +| | | AI大模型服务镜像使用指南 | [docs/zh/Tools/AI/AI_Large_Model_Service_Images_Userguide](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Tools/AI/AI_Large_Model_Service_Images_Userguide) | +| | | AI容器镜像用户指南 | [docs/zh/Tools/AI/AI_Container_Image_Userguide](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Tools/AI/AI_Container_Image_Userguide) | +| 图形桌面使用 | | Gnome用户指南 | [docs/zh/Tools/desktop/Gnome](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Tools/desktop/Gnome) | +| | | UKUI用户指南 | [docs/zh/Tools/desktop/UKUI](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Tools/desktop/UKUI) | +| | | DDE用户指南 | [docs/zh/Tools/desktop/DDE](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Tools/desktop/DDE) | +| | | Kiran用户指南 | [docs/zh/Tools/desktop/Kiran](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Tools/desktop/Kiran) | +| 云原生工具 | | CTinspector用户指南 | [docs/zh/Tools/Cloud/CTinspector](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Tools/Cloud/CTinspector) | +| | | CPDS用户指南 | [docs/zh/Tools/Cloud/CPDS](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Tools/Cloud/CPDS) | +| | | PilotGo用户指南 | [docs/zh/Tools/Cloud/PilotGo](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Tools/Cloud/PilotGo) | +| 系统运维 | 热补丁制作 | SysCare用户指南 | [docs/zh/Server/Maintenance/SysCare](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Maintenance/SysCare) | +| | 系统监控 | sysmonitor用户指南 | [docs/zh/Server/Maintenance/sysmonitor](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Maintenance/sysmonitor) | +| 安全 | | secGear开发指南 | [docs/zh/Server/Security/secGear](https://gitee.com/openeuler/docs/tree/25.03/docs/zh/Server/Security/secGear) | + +## 文档仓目录结构说明 + +### 场景 -![image](figures/doccenter-modules.png) +文档中心有五个业务场景,服务器、虚拟化、云原生、边缘计算和嵌入式,分别对应 docs 仓内 docs/zh 目录下的 Server、Virtualization、Cloud、EdgeComputing 和 Embedded 子目录,工具模块对应 Tools 子目录。 docs仓场景相关目录结构示例如下: @@ -19,15 +112,15 @@ docs仓场景相关目录结构示例如下: ├─docs │ ├─en │ └─zh -│ ├─Cloud -│ ├─EdgeComputing -│ ├─Embedded -│ ├─Server -│ ├─Tools -│ └─Virtualization +│ ├─Cloud +│ ├─EdgeComputing +│ ├─Embedded +│ ├─Server +│ ├─Tools +│ └─Virtualization ``` -工具模块下的子模块包括社区工具、DevOps、AI、图形桌面使用、云原生、系统运维和安全,分别对应 docs/zh/Tools 目录下的 CommunityTools、DevOps、AI、desktop、Cloud、Maintenance 和 Security 子目录。 +工具模块下的子模块包括社区工具、DevOps、AI、图形桌面使用、云原生、系统运维和安全,分别对应 Tools 目录下的 CommunityTools、DevOps、AI、desktop、Cloud、Maintenance 和 Security 子目录。 docs仓工具相关目录结构示例如下: @@ -35,26 +128,24 @@ docs仓工具相关目录结构示例如下: ├─docs │ ├─en │ └─zh -│ ├─Cloud -│ ├─EdgeComputing -│ ├─Embedded -│ ├─Server -│ ├─Tools -│ │ ├─AI -│ │ ├─Cloud -│ │ ├─CommunityTools -│ │ ├─desktop -│ │ ├─DevOps -│ │ ├─Maintenance -│ │ └─Security -│ └─Virtualization +│ ├─Cloud +│ ├─EdgeComputing +│ ├─Embedded +│ ├─Server +│ ├─Tools +│ │ ├─AI +│ │ ├─Cloud +│ │ ├─CommunityTools +│ │ ├─desktop +│ │ ├─DevOps +│ │ ├─Maintenance +│ │ └─Security +│ └─Virtualization ``` -## 一级目录 - -各业务场景下均有具体的目录划分。就服务器场景而言,其进一步细分为发行说明、快速入门、安装升级、系统管理、系统运维等子目录,分别对应 Server/Releasenotes、Server/Quickstart、Server/InstallationUpgrade、Server/Administration 和 Server/Maintenance。 +### 类别 -![image](figures/server-menu.png) +各业务场景下均有具体的类别划分。就服务器场景而言,其进一步细分为发行说明、快速入门、安装升级、系统管理、系统运维等子目录。 docs仓服务器场景目录结构示例如下: @@ -62,32 +153,30 @@ docs仓服务器场景目录结构示例如下: ├─docs │ ├─en │ └─zh -│ ├─Cloud -│ ├─EdgeComputing -│ ├─Embedded -│ ├─Server -│ │ ├─Administration -│ │ ├─Development -│ │ ├─DiversifiedComputing -│ │ ├─HighAvailability -│ │ ├─InstallationUpgrade -│ │ ├─Maintenance -│ │ ├─MemoryandStorage -│ │ ├─Network -│ │ ├─Performance -│ │ ├─Quickstart -│ │ ├─Releasenotes -| | ├─Security -│ │ └─_menu.md -│ ├─Tools -│ └─Virtualization +│ ├─Cloud +│ ├─EdgeComputing +│ ├─Embedded +│ ├─Server +│ │ ├─Administration +│ │ ├─Development +│ │ ├─DiversifiedComputing +│ │ ├─HighAvailability +│ │ ├─InstallationUpgrade +│ │ ├─Maintenance +│ │ ├─MemoryandStorage +│ │ ├─Network +│ │ ├─Performance +│ │ ├─Quickstart +│ │ ├─Releasenotes +| | ├─Security +│ │ └─_menu.md +│ ├─Tools +│ └─Virtualization ``` -## 手册 - -每个一级目录下存放手册或继续设置二级目录。以服务器场景中的系统运维目录为例,其中包含八本手册,每本手册分别对应一个目录。 +### 手册 -![image](figures/maintenance-manual.png) +每个类别下存放手册或继续设置二级目录。以服务器场景中的系统运维目录为例,其中包含八本手册,每本手册分别对应一个目录。 服务器下系统运维的目录结构示例如下: @@ -95,16 +184,16 @@ docs仓服务器场景目录结构示例如下: ├─docs │ ├─en │ └─zh -│ ├─Cloud -│ ├─EdgeComputing -│ ├─Embedded -│ ├─Server -│ │ ├─Administration -│ │ ├─Development -│ │ ├─DiversifiedComputing -│ │ ├─HighAvailability -│ │ ├─InstallationUpgrade -│ │ ├─Maintenance +│ ├─Cloud +│ ├─EdgeComputing +│ ├─Embedded +│ ├─Server +│ │ ├─Administration +│ │ ├─Development +│ │ ├─DiversifiedComputing +│ │ ├─HighAvailability +│ │ ├─InstallationUpgrade +│ │ ├─Maintenance │ │ │ ├─A-Ops │ │ │ ├─CommonSkills │ │ │ ├─CommonTools @@ -113,40 +202,37 @@ docs仓服务器场景目录结构示例如下: │ │ │ ├─SysCare │ │ │ ├─sysmonitor │ │ │ └─Troubleshooting -│ │ ├─MemoryandStorage -│ │ ├─Network -│ │ ├─Performance -│ │ ├─Quickstart -│ │ ├─Releasenotes -| | ├─Security +│ │ ├─MemoryandStorage +│ │ ├─Network +│ │ ├─Performance +│ │ ├─Quickstart +│ │ ├─Releasenotes +| | ├─Security │ │ └─_menu.md -│ ├─Tools -│ └─Virtualization +│ ├─Tools +│ └─Virtualization ``` 以服务器场景中的性能调优目录为例,其下进一步划分出二级目录,分别为概述、CPU调优、系统调优、调优框架。 -![image](figures/performance-menu.png) - 服务器下性能调优的目录结构示例如下: ```text ├─docs │ ├─en │ └─zh -│ ├─Cloud -│ ├─EdgeComputing -│ ├─Embedded -│ ├─Server -│ │ ├─Administration -│ │ ├─Development -│ │ ├─DiversifiedComputing -│ │ ├─HighAvailability -│ │ ├─InstallationUpgrade -│ │ ├─Maintenance -│ │ ├─MemoryandStorage -│ │ ├─Network -│ │ ├─Performance +│ ├─Cloud +│ ├─EdgeComputing +│ ├─Embedded +│ ├─Server +│ │ ├─Administration +│ │ ├─Development +│ │ ├─DiversifiedComputing +│ │ ├─HighAvailability +│ │ ├─InstallationUpgrade +│ │ ├─MemoryandStorage +│ │ ├─Network +│ │ ├─Performance │ │ │ ├─CPUOptimization │ │ │ │ ├─KAE │ │ │ │ └─sysBoost @@ -156,23 +242,162 @@ docs仓服务器场景目录结构示例如下: │ │ │ │ └─A-Tune │ │ │ └─TuningFramework │ │ │ └─oeAware -│ │ ├─Quickstart -│ │ ├─Releasenotes -| | ├─Security +│ │ ├─Quickstart +│ │ ├─Releasenotes +| | ├─Security │ │ └─_menu.md -│ ├─Tools -│ └─Virtualization +│ ├─Tools +│ └─Virtualization ``` -## 文档 +每本手册包含一个或多个`.md`文件及一个`_menu.md`文件。例如,《内核热升级指南》手册中包括三篇文档,包括安装与部署、使用方法、常用问题与解决办法。 -文档及其 _menu.md 文件放在手册目录下。例如,《内核热升级指南》手册中包括三篇文档,存放在 Server/Maintenance/KernelLiveUpgrade 目录下,包括安装与部署、使用方法、常用问题与解决办法。 +```text +├─docs +│ ├─en +│ └─zh +│ ├─Cloud +│ ├─EdgeComputing +│ ├─Embedded +│ ├─Server +│ │ ├─Administration +│ │ ├─Development +│ │ ├─DiversifiedComputing +│ │ ├─HighAvailability +│ │ ├─InstallationUpgrade +│ │ ├─Maintenance +│ │ │ ├─A-Ops +│ │ │ ├─CommonSkills +│ │ │ ├─CommonTools +│ │ │ ├─Gala +│ │ │ ├─KernelLiveUpgrade +│ | │ │ ├─installation-and-deployment.md +│ | │ │ ├─how-to-run.md +│ | │ │ ├─common-problems-and-solutions.md +│ | │ │ └─_menu.md +│ │ │ ├─SysCare +│ │ │ ├─sysmonitor +│ │ │ └─Troubleshooting +│ │ ├─MemoryandStorage +│ │ ├─Network +│ │ ├─Performance +│ │ ├─Quickstart +│ │ ├─Releasenotes +| | ├─Security +│ │ └─_menu.md +│ ├─Tools +│ └─Virtualization +``` + +## _menu 文件格式 + +### 手册的 _menu 文件 + +每本手册都需要维护一个`_menu.md`配置文件来维护该本手册中各章节间的逻辑关系。 -![image](figures/内核热升级指南menu.png) +《内核热升级指南》手册的`_menu.md`文件示例如下: -- 安装与部署,对应路径 /KernelLiveUpgrade/installation-and-deployment.md -- 使用方法,对应路径 /KernelLiveUpgrade/how-to-run.md -- 常用问题,对应路径 /KernelLiveUpgrade/common-problems-and-solutions.md -- _menu.md 文件,对应路径 /KernelLiveUpgrade/_menu.md +```yaml +--- +label: '内核热升级指南' +description: '使用用户态自动化工具快速重启内核和程序热迁移实现内核热替换特性' +children: + - label: '安装与部署' + href: './installation-and-deployment.md' + - label: '使用方法' + href: './how-to-run.md' + - label: '常见问题与解决方法' + href: './common-problems-and-solutions.md' +--- +``` + +- 顶层 label 指定手册名为“内核热升级指南”。 +- description 指定该手册的简介说明。 +- children 下配置手册中的文档信息: + - children 下的 label 指定文档名称。 + - children 下的 href 指定文档地址(建议使用相对路径)。 + +### 场景的 _menu 文件 + +不仅每本手册需维护对应的`_menu.md`文件,各业务场景目录下同样要维护`_menu.md`文件。以服务器场景为例,其`_menu.md`文件示例如下: + +```yaml +--- +label: '服务器' +children: + - label: '发行说明' + children: + - reference: './Releasenotes/Releasenotes/_menu.md' + - label: '快速入门' + children: + - reference: './Quickstart/Quickstart/_menu.md' + - label: '安装升级' + children: + - reference: './InstallationUpgrade/Installation/_menu.md' + - reference: './InstallationUpgrade/Upgrade/_menu.md' + - label: '系统管理' + children: + - reference: './Administration/Administrator/_menu.md' + - reference: './Administration/sysMaster/_menu.md' + - reference: './Administration/CompaCommand/_menu.md' + - label: '系统运维' + children: + - reference: './Maintenance/A-Ops/_menu.md' + - reference: './Maintenance/Gala/_menu.md' + - reference: './Maintenance/sysmonitor/_menu.md' + - reference: './Maintenance/KernelLiveUpgrade/_menu.md' + - reference: './Maintenance/SysCare/_menu.md' + - reference: './Maintenance/CommonSkills/_menu.md' + - reference: './Maintenance/CommonTools/_menu.md' + - reference: './Maintenance/Troubleshooting/_menu.md' + - label: '安全' + children: + - reference: './Security/SecHarden/_menu.md' + - reference: './Security/TrustedComputing/_menu.md' + - reference: './Security/secGear/_menu.md' + - reference: './Security/CVE-ease/_menu.md' + - reference: './Security/CertSignature/_menu.md' + - reference: './Security/Sbom/_menu.md' + - reference: './Security/ShangMi/_menu.md' + - label: '内存与存储' + children: + - reference: './MemoryandStorage/lvm/_menu.md' + - reference: './MemoryandStorage/etmem/_menu.md' + - reference: './MemoryandStorage/GMEM/_menu.md' + - reference: './MemoryandStorage/HSAK/_menu.md' + - label: '网络' + children: + - reference: './Network/NetworConfig/_menu.md' + - reference: './Network/Gazelle/_menu.md' + - label: '性能调优' + children: + - label: '概述' + children: + - reference: './systemResource/_menu.md' + - label: '调优框架' + children: + - reference: './oeAware/_menu.md' + - label: 'CPU调优' + children: + - reference: './sysBoost/_menu.md' + - reference: './KAE/_menu.md' + - label: '系统调优' + children: + - reference: './A-Tune/_menu.md' + - label: '应用开发' + children: + - reference: './Development/ApplicationDev/_menu.md' + - reference: './Development/GCC/_menu.md' + - label: 'HA高可用' + children: + - reference: './HighAvailability/HA/_menu.md' + - label: '多样性算力' + children: + - reference: './DiversifiedComputing/DPUOffload/_menu.md' + - reference: './DiversifiedComputing/DPU-OS/_menu.md' +--- +``` -`_menu.md`文件相关规范请详见[menu文件写作规范](./menu_specifications.md)。 +- 顶层 label 指定场景名,例子中展示的是服务器场景。 +- 服务器 children 下的 label 对应服务器场景下的一级目录,如发行说明、快速入门、安装升级、系统管理等。 +- 每个一级目录 children 下的 reference 表明引用,您可以使用该字段引用该目录下各本手册的`_menu.md`文件或二级目录,从而形成一个完整的“菜单树”。 diff --git a/docs/zh/Contribute/documentation_writing_specifications.md b/docs/zh/Contribute/documentation_writing_specifications.md index 1107ada6046e342f7126abe4ce77dc7d4a53c12f..63c2911f58fcdcd22ef22d7039af73b8f46b1f2b 100644 --- a/docs/zh/Contribute/documentation_writing_specifications.md +++ b/docs/zh/Contribute/documentation_writing_specifications.md @@ -1,89 +1,329 @@ -# 文档写作规范 +# 写作规范 -## 写作规范 +## 文档结构 -文档结构、内容元素、语言风格书写请参考[写作规范](./写作规范.md)。 +特性手册内容一般包括概述、背景介绍、操作类文档(安装与部署、使用指南)、常见问题和附录,开发者可以根据项目实际情况增加或删减。 +以[A-Tune 项目为例](https://docs.openeuler.org/zh/docs/22.03_LTS_SP2/docs/A-Tune/A-Tune.html),可以参考如下内容: -## 流水线门禁 +### 概述 -### Markdownlint +一句话介绍特性定义与功能。 -markdownlint 是一款检查 Markdown 文件格式的工具。markdownlint规则介绍及本仓规则设置,请参考[检查规则](./markdownlint检查规则.md)。可使用[工具](./markdownlint错误修复工具.md)对markdownlint 进行批量修复。 +【举例】 -> 说明: -> 开发者需要确保提交的文档已修复所有markdownlint错误,否则CI门禁报错,将无法合入。 +```markdown +本文档介绍openEuler系统性能自优化软件A-Tune的安装部署和使用方法,以指导开发者快速了解并使用A-Tune。 +``` -### 标签闭合 +### 背景介绍 -链接、表格等内容元素建议使用markdown语法书写。如果需要使用HTML样式,请确保标签闭合。 +背景介绍类文档写明特性背景与简介、架构说明等。常见文档标题:`认识xxx`。 -错误示例 +### 操作类文档 - ```yaml - - - - - -
Header 1 - Header 2
Data 1 - Data 2
- ``` +操作类文档写明步骤、注意事项、前提条件等,以便能对其他开发者起到帮助。 -正确示例 - - ```yaml - - - - - - - - - -
Header 1Header 2
Data 1Data 2
- ``` +- 使用说明 -> 说明:开发者需要确保提交的文档中HTML 标签已全部闭合,否则CI门禁报错,将无法合入。 +说明此操作在什么场景下使用可以解决开发者的什么问题。 -### 引用链接 +- 环境要求 -图片、网站、手册链接请检查路径地址是否正确。 +执行此操作需要准备的软硬件环境、权限以及其它约束条件。 -反例 +- 操作步骤 -- 失效的网站链接 +具体的操作步骤,需要注意如下事项: + - 建议一步一个操作步骤,不建议多个操作步骤合并在一个步骤中描写。 + - 如果操作可选,要明确可选条件。 + - 开发步骤中,涉及调用接口(例如使用了工具或者 SQL 语句),需要对使用的接口进行说明。 - ```text - [错误官网](https://doc.openeuler.org/zh/) - ``` +- 结果验证 + +说明如何验证操作结果正确。如果验证操作与步骤强相关,可以在步骤中描述。例如,执行 SQL 语句的返回信息。 + +### 常见问题 + +此类文档应该包括问题描述、产生原因及解决办法。 + +### 附录 + +附录可包含术语与缩略语介绍。 + +## 内容元素 + +### 命名 + +对于新增文档,请在对应的文件目录下新增 MarkDown 文档(即以 .md 结尾的文件)。 + +【规则】新增文档名称不能与已有文档重名,如果有请重新命名。 + +【规则】文档需要以**英文**命名。 + +【规则】文件名中不能包含括号,会导致文件目录无法正常显示。可以将括号修改为可识别的下划线(\_)或者中划线(-)。 + +【举例】 + +```text +installation_and_deployment.md #新增‘安装与部署’文档 +``` + +### 标题 + +【规则】标题尽量采用简洁的语句概况反映章节的中心内容,注意不要省略必要的信息。 + +【规则】操作类文档标题尽量用动宾结构(例如:申请权限);相同级别,相同类型的标题结构保持一致。 + +【规则】标题不使用标点符号结尾,标题中尽量采用圆括号来表示补充说明,标题中不能出现特殊字符,如“?”。 + +【规则】标题与正文使用 1 整行换行隔开。 + +【规则】标题使用 “#” 空格连接标题名,标题级别一次只能增加一个级别且第一个标题应该是顶层标题。 + +【举例】 + +```markdown +# 一级标题 +## 二级标题 +### 三级标题 +#### 四级标题 +##### 五级标题 +###### 六级标题 +``` + +### 正文 + +【使用方法】 + +- 斜体:使用一个星号(\*)表示斜体。 + + ```txt + *斜体文本* + ``` + +- 粗体:使用两个星号(\*\*)表示粗体。 + + ```txt + **粗体文本** + ``` + +- 粗斜体:使用3个星号(\*\*\*)表示粗斜体。 + + ```txt + ***粗斜体文本*** + ``` + +- 转义:对特定内容使用转义符 \。 + + ```txt + \<转义的标记符号> + ``` + +【规则】该转义的字符必须严格用转义符 \ 。 + +【规则】如果有连续两个转义符,转义符之间要有空格 \{ \}。 + +【规则】国际化:需同时提供中英文文档,可联系协助翻译;如需参与英文文档贡献,可参考[指南](./english_doc_contribute.md)。 + +### 空格 + +【规则】编辑文档时中文和英文之间**建议**加空格,页面展示更美观,请保持全文一致。如果是产品名词如 “豆瓣FM”,请按照官方定义格式书写。 + + 例如:openEuler 是一款开源操作系统。当前 openEuler 内核源于 Linux ,支持鲲鹏及其它多种处理器。 + +【规则】中文和数字之间加空格。 + +【规则】数字和单位之间不加空格。 + +【规则】全角标点与其他字符之间不加空格。 + + 例如:刚刚成为了 openEuler 的 maintainer,好开心。 + +### 图片 + +【使用方法】 + +```bash +![alt 属性文本](图片地址) + +![alt 属性文本](图片地址 "可选标题") +``` + +【规则】图片统一存放到文档同级目录下的 figures 文件夹中。例如,[A-Tune用户指南](https://docs.openeuler.org/zh/docs/22.03_LTS_SP2/docs/A-Tune/A-Tune.html)中的手册中使用的图片,统一存储在 [A-Tune](https://gitee.com/openeuler/docs/tree/stable2-22.03_LTS_SP2/docs/zh/docs/A-Tune/figures) 路径下。该文件夹下的文件引用图片时,使用相对引用。 + +【规则】请使用原创图片,避免存在知识产权侵权风险。 + +【规则】图文配合使用,切忌图文分离。 + +【规则】图片格式首选 png,此外也接受 jpg。图片的高不超过 640px,宽不超过 393px,图片大小建议不超过 150K。 + +【规则】中文用中文插图,英文用英文插图。 + +【规则】图片路径不能包含中文。 -- 错误的相对路径 +【规则】如果是截图,请在允许的范围内只保留有用的信息。图形中需要突出的关键信息,可增加红色框线或者文字备注说明。 - ```text - [写作规范](../写作规范.md) +【举例】 +​图片以 `![](./figures/pic_name.png)` 格式书写,“./” 不可少,否则图片无法显示到现网。 + +### 代码块 + +代码示例说明了如何实现特定功能,开发人员使用代码示例来编写和调试代码。 + +【规则】代码的逻辑和语法正确。 + +【规则】代码的输入和输出尽可能的分开。 + +【规则】保证代码中关键步骤要有注释说明。 + +【规则】文中行内代码和命令行使用 1 对反引号,如: `代码行`。 + +【规则】块级代码使用 3 个顿号或 4 个空格(不能用 TAB 键)缩进,且上下均用整行隔开。 + +【举例】 + +- 行内代码 + + ```txt + `printf()` 函数 ``` -​ -正例 +- 块级代码 -- 网站链接 + ```python + #!/usr/bin/env python3 + print("Hello, World!"); + ``` - ```text - [错误官网](https://docs.openeuler.org/zh/) + ```c + #include + int main(void) + { + printf("Hello world\n"); + } ``` +### 列表 + +- 无序列表:无序列表使用星号(**\***)、加号(**+**)或是减号(**-**)作为列表标记,这些标记后面要添加一个空格,然后再填写内容。同一个无序列表,建议使用同一个符号。 + + ```txt + * 第一项 + * 第二项 + * 第三项 + + + 第一项 + + 第二项 + + 第三项 + + + - 第一项 + - 第二项 + - 第三项 + ``` + +- 有序列表:有序列表使用数字并加上 **.** 号来表示。 + + ```txt + 1. 第一项 + 2. 第二项 + 3. 第三项 + ``` + +- 嵌套列表:列表嵌套只需在子列表中的选项前面添加四个空格即可。 + + ```txt + 1. 第一项: + - 第一项嵌套的第一个元素 + - 第一项嵌套的第二个元素 + 2. 第二项: + - 第二项嵌套的第一个元素 + - 第二项嵌套的第二个元素 + ``` + +【规则】有明显先后逻辑顺序情况请使用有序列表,并列关系、多选一情况请使用无序列表。 + +【规则】当项目列表是术语、短语时,统一不加标点符号。 + +【规则】当项目列表是句子时,统一加句号。 + +【规则】特殊情况下如果不能避免出现短语和句子混合的情况,统一加句号。 + +【规则】项目列表前几项以分号结尾,最后一项以句号结尾的形式也可以接受。 + +### 注释符号 + +文档中会出现以下注释符号,代表不同的使用场景和提示程度。如果需要提示用户注意的信息,可以根据重要程度选择对应的注释符号。 + +| 标识符 | 用途/含义 | 使用方法 | +|--------|------------------------------------------------------------------|-----------------------------------------------------------------------------| +| 警告 | 如未按该警告内容操作,可能会导致结果异常,且不可恢复。 | `>![](./public_sys-resources/icon-warning.gif)**警告:**`
`>正文内容` | +| 注意 | 如未按该注意事项操作,可能会导致任务中断或结果异常,但是可恢复。 | `>![](./public_sys-resources/icon-notice.gif)**注意:**`
`>正文内容` | +| 说明 | 提供帮助提示或有用的参考信息 | `>![](./public_sys-resources/icon-note.gif)**说明:**`
`>正文内容` | + +### 链接 + +【规则】链接需要确保指向的目标文件存在,否则会造成链接跳转不正常,不建议使用 HTML 的链接样式。 + +【举例】 + +```markdown +- 网站链接 +这是一个链接 [菜鸟教程](https://www.runoob.com)。 + - 相对路径 + [文档开发流水线门禁](./ci_rules.md) +``` - ```text - [写作规范](./contribute/写作规范.md) - ``` +### 表格 + +【规则】markdown 文档中请使用以下方式创建表格,不建议使用 HTML 的表格样式。 + +【举例】 + +| 表头1 | 表头2 | +| ---------- | -------- | +| 单元格1 | 单元格2 | +| 单元格4 | 单元格4 | + +【使用方法】 +设置表格的对齐方式: + +- -: 设置内容和标题栏居右对齐。 +- :- 设置内容和标题栏居左对齐。 +- :-: 设置内容和标题栏居中对齐。 + +【规则】当表格内一列全部是术语、短语时,统一不加标点符号。 + +【规则】当表格内一列全部是句子时,统一加句号。 + +【规则】特殊情况下如果不能避免出现短语和句子混合的情况,统一加句号。 + +### 标点符号 + +【规则】单位与数字之间不建议加空格,比如 50m,10kg,64Kbit/s。 + +【规则】对于有序/无序列表,如果是长句子,建议统一以句号结尾,如果是短语,结尾可不用标点。**重点是前后一致,要么都加,要么都不加**。 + +【规则】中文文档使用全角标点。 + +【规则】数字使用半角字符。 + +【规则】感叹号使用场景为可能引发严重后果的操作或设备安全、人身安全的警告。其他场景不允许使用感叹号。 + +【规则】文内引用其他文档件事添加书名号,同时建议增加引用文档的跳转链接。例如:安装 openEuler 系统,安装方法参考《[openEuler 22.03 LTS SP2 安装指南](https://docs.openeuler.org/zh/docs/22.03_LTS_SP2/docs/Installation/installation.html)》。 + +## 语言风格 + +【规则】提交内容必须是与 openEuler 特性相关内容。 + +【规则】内容不能包含敏感信息、有强烈的种族歧视或性别歧视的内容。 ->说明:开发者需要确保提交的文档中链接有效,否则CI门禁报错,将无法合入。 +【规则】提交的内容必须是原创内容,不得侵犯他人知识产权。 -### 静态检查 +【规则】提交的内容必须客观、真实,不允许使用夸大宣传等词汇。 -新增文档时,为了能在openEuler 文档官网展示,需要在_menu.md文件增加对应文档位置。 +**文档贡献中不受欢迎的行为** ->说明:开发者需要确保提交新增文档同步提交了_menu.md文件修改,否则CI门禁报错,将无法合入。 +短时间内通过自动化工具,提交大量的PR,提交大量的处理诸如拼写错误,语法错误,日期错误,语句不通顺等“无害的错误”的修正。 +具体内容以及处理措施详见 [openEuler社区开发行为规范 V1.0](https://gitee.com/openeuler/community/blob/master/zh/technical-committee/governance/openEuler%E7%A4%BE%E5%8C%BA%E5%BC%80%E5%8F%91%E8%A1%8C%E4%B8%BA%E8%A7%84%E8%8C%83.md)。 diff --git "a/docs/zh/Contribute/figures/\346\226\207\346\241\243\344\273\223\346\200\273\350\247\210.png" "b/docs/zh/Contribute/figures/\346\226\207\346\241\243\344\273\223\346\200\273\350\247\210.png" new file mode 100644 index 0000000000000000000000000000000000000000..a87b2504d20c7a744421752d1e8905dc885b97b7 Binary files /dev/null and "b/docs/zh/Contribute/figures/\346\226\207\346\241\243\344\273\223\346\200\273\350\247\210.png" differ diff --git "a/docs/zh/Contribute/markdownlint\346\243\200\346\237\245\350\247\204\345\210\231.md" b/docs/zh/Contribute/markdownlint_rules.md similarity index 99% rename from "docs/zh/Contribute/markdownlint\346\243\200\346\237\245\350\247\204\345\210\231.md" rename to docs/zh/Contribute/markdownlint_rules.md index d7a8cf07dd5bc3278b5176fe7e97ed8d398dbe41..2dc12ff942b9938a545b8e8ae8693b914bfe82ea 100644 --- "a/docs/zh/Contribute/markdownlint\346\243\200\346\237\245\350\247\204\345\210\231.md" +++ b/docs/zh/Contribute/markdownlint_rules.md @@ -820,7 +820,7 @@ markdownlint 是一款检查 Markdown 文件格式的工具,可以根据设置 [EOF] ```` -## OpenEuler 规则设置 +## openEuler 规则设置 - openEuler 规则采用如下方案: diff --git "a/docs/zh/Contribute/markdownlint\351\224\231\350\257\257\344\277\256\345\244\215\345\267\245\345\205\267.md" b/docs/zh/Contribute/markdownlint_tools.md similarity index 100% rename from "docs/zh/Contribute/markdownlint\351\224\231\350\257\257\344\277\256\345\244\215\345\267\245\345\205\267.md" rename to docs/zh/Contribute/markdownlint_tools.md diff --git a/docs/zh/Contribute/public_sys-resources/icon-caution.gif b/docs/zh/Contribute/public_sys-resources/icon-caution.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/docs/zh/Contribute/public_sys-resources/icon-caution.gif differ diff --git a/docs/zh/Contribute/public_sys-resources/icon-danger.gif b/docs/zh/Contribute/public_sys-resources/icon-danger.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/docs/zh/Contribute/public_sys-resources/icon-danger.gif differ diff --git a/docs/zh/Contribute/public_sys-resources/icon-note.gif b/docs/zh/Contribute/public_sys-resources/icon-note.gif new file mode 100644 index 0000000000000000000000000000000000000000..6314297e45c1de184204098efd4814d6dc8b1cda Binary files /dev/null and b/docs/zh/Contribute/public_sys-resources/icon-note.gif differ diff --git a/docs/zh/Contribute/public_sys-resources/icon-notice.gif b/docs/zh/Contribute/public_sys-resources/icon-notice.gif new file mode 100644 index 0000000000000000000000000000000000000000..86024f61b691400bea99e5b1f506d9d9aef36e27 Binary files /dev/null and b/docs/zh/Contribute/public_sys-resources/icon-notice.gif differ diff --git a/docs/zh/Contribute/public_sys-resources/icon-tip.gif b/docs/zh/Contribute/public_sys-resources/icon-tip.gif new file mode 100644 index 0000000000000000000000000000000000000000..93aa72053b510e456b149f36a0972703ea9999b7 Binary files /dev/null and b/docs/zh/Contribute/public_sys-resources/icon-tip.gif differ diff --git a/docs/zh/Contribute/public_sys-resources/icon-warning.gif b/docs/zh/Contribute/public_sys-resources/icon-warning.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/docs/zh/Contribute/public_sys-resources/icon-warning.gif differ diff --git "a/docs/zh/Contribute/\345\206\231\344\275\234\350\247\204\350\214\203.md" "b/docs/zh/Contribute/\345\206\231\344\275\234\350\247\204\350\214\203.md" deleted file mode 100644 index 7ea558dfdc6943f525ac14669c4915656acf0481..0000000000000000000000000000000000000000 --- "a/docs/zh/Contribute/\345\206\231\344\275\234\350\247\204\350\214\203.md" +++ /dev/null @@ -1,302 +0,0 @@ -# 写作规范 - -## 文档内容 - -根据文档分类如用户指南、开发者指南等,选择合适的大纲,要求能简洁清晰的实现文档的目的。 - -- 开源项目做什么 -- 什么语言编写 -- 项目维护、CI、依赖更新状态 -- 项目可用版本及其他版本 -- Demo 或官网地址 -- 功能特点 -- 获取 -- 安装 -- 使用(操作步骤、接口文档、开发指南等) -- FAQ - -拟定文档大纲,编辑文档内容,针对文档内容做如下规范。 - -- 提交内容必须是与 openEuler 特性相关内容。 -- 内容不能包含敏感信息、有强烈的种族歧视或性别歧视的内容。 -- 提交的内容必须是原创内容,不得侵犯他人知识产权。 -- 提交的内容必须客观、真实,不允许使用夸大宣传等词汇。 - -## 文档结构 - -项目手册内容一般包括用户指南、背景介绍、操作类文档(安装与部署、使用指南)、常见问题和附录,写作者可以根据项目实际情况增加或删减。 -以[A-Tune 项目为例](https://docs.openeuler.org/zh/docs/22.03_LTS_SP2/docs/A-Tune/A-Tune.html),可以参考如下内容: - -- **用户指南** - - 用户指南包含项目介绍和读者对象。 - -- **背景介绍类** - - 背景介绍类文档写明项目背景与简介、架构说明等。 - -- **操作类文档** - - 操作类文档写明步骤、注意事项、前提条件等,以便能对其他开发者起到帮助。 - - - 使用说明 - - 说明此操作在什么场景下使用可以解决用户的什么问题。 - - - 环境要求 - - 执行此操作需要用户准备的软硬件环境、权限以及其它约束条件。 - - - 操作步骤 - - 具体的操作步骤,需要注意如下事项: - - - 建议一步一个操作步骤,不建议多个操作步骤合并在一个步骤中描写。 - - 如果操作可选,要明确可选条件。 - - 开发步骤中,涉及调用接口(例如使用了工具或者 SQL 语句),需要对使用的接口进行说明。 - - - 结果验证 - - 说明如何验证操作结果正确。如果验证操作与步骤强相关,可以在步骤中描述。例如,执行 SQL 语句的返回信息。 - -- **常见问题** - 此类文档应该包括问题描述、产生原因及解决办法。 - -- **附录** - 附录可包含术语与缩略语介绍。 - -## 命名 - -对于新增文档,请在对应的文件目录下新增 MarkDown 文档(即以 .md 结尾的文件)。文档命名需要根据文档的内容声明。 - -- 新增文档名称不能与已有文档重名,如果有请重新命名。 -- 新增文档之后,需要在 menu 文件夹下的 index 文件中新增对应的目录,否则新增文件无法显示。目录层级不建议超过三级。 -- 文件名中不能包含括号,会导致文件目录无法正常显示。可以将括号修改为可识别的下划线(\_)或者中划线(-)。 - -## 标题 - -- 标题尽量采用简洁的语句概况反映章节的中心内容,注意不要省略必要的信息。例如:xxx概述,如果用概述来代替,就会导致读者无法从标题中获取到有用信息。 -- 操作类文档标题尽量用动宾结构(例如:申请权限)。 -- 相同级别,相同类型的标题结构保持一致。 -- 标题不使用标点符号结尾。 -- 标题中尽量采用圆括号来表示补充说明,标题中不能出现特殊字符,如“?”。 -- 标题与正文使用 1 整行换行隔开。 -- 标题使用 “#” 空格连接标题名,标题级别一次只能增加一个级别且第一个标题应该是顶层标题。 - -## 目录 - -文档为以 .md 结尾的文件,存储在 路径下。 - -docs 文件夹中包含以下内容: - -- zh:全量版中文资料。 -- en:全量版英文资料。 - -根据文档所属的手册,选择对应的文件夹。 - -- 目录层级不建议过深。 -- doc 仓库内新增文档需要同步修改 menu.json 文件,才可以在官网文档页面展示该文档。 -- doc 官网会在右侧自动生成文档的章节目录,不建议额外增加 TOC 目录。 - -## 正文 - -- 可使用*斜体* **加粗**样式。 -- 该转义的字符必须严格用转义符 \ ,例如 \* \< \> \_等。 -- 如果有连续两个转义符,转义符之间要有空格 \{ \}。 -- 国际化:需同时提供中英文文档,可联系协助翻译。 - -## 空格 - -- 编辑文档时中文和英文之间建议加空格,页面展示更美观,请保持全文一致。如果是产品名词如 “豆瓣FM”,请按照官方定义格式书写。 - - 例如:openEuler 是一款开源操作系统。当前 openEuler 内核源于 Linux ,支持鲲鹏及其它多种处理器。 - -- 中文和数字之间加空格。 - -- 数字和单位之间不加空格。 - -- 链接与正文之间加空格。 - -- 全角标点与其他字符之间不加空格。 - - 例如:刚刚成为了 openEuler 的 maintainer,好开心。 - -## 图片 - -- 图片统一存放到文档同级目录下的 figures 文件夹中。例如,[A-Tune用户指南](https://docs.openeuler.org/zh/docs/22.03_LTS_SP2/docs/A-Tune/A-Tune.html)中的手册中使用的图片,统一存储在 [A-Tune](https://gitee.com/openeuler/docs/tree/stable2-22.03_LTS_SP2/docs/zh/docs/A-Tune/figures) 路径下。该文件夹下的文件引用图片时,使用相对引用。 -- 请使用原创图片,避免存在知识产权侵权风险。 -- 图形清晰可辨识,图形信息完整,例如流程图有“开始”和“结束”。 -- 图形逻辑清晰。 -- 图文配合使用,切忌图文分离。 -- 图片格式首选 png,此外也接受 jpg。图片的高不超过 640px,宽不超过 393px,图片大小建议不超过 150K。 -- 中文用中文插图,英文用英文插图。 -- 图片路径不能包含中文。 -- 图片后缀也必须是小写,不能出现 .PNG 这种大写后缀 -- 图片建议根据内容命名,只用数字序列不利于后续图片的继承。 -- 如果是截图,请在允许的范围内只保留有用的信息。图形中需要突出的关键信息,可增加红色框线或者文字备注说明。 - -图片写作示例: - - 图片以 ![](./figures/pic_name.png) 格式书写,“./” 不可少,否则图片无法显示到现网。 - -## 代码块 - -代码示例说明了如何实现特定功能,开发人员使用代码示例来编写和调试代码。代码要求如下: - -- 代码的逻辑和语法正确。 -- 代码的输入和输出尽可能的分开。 -- 保证代码中关键步骤要有注释说明。 -- 代码源于具体实例。 -- 文中行内代码和命令行使用 1 对反引号 如: `代码行`。 -- 块级代码使用 3 个顿号或 4 个空格(不能用 TAB 键)缩进,且上下均用整行隔开,如下: - - ```python - #!/usr/bin/env python3 - print("Hello, World!"); - ``` - - ```c - #include - int main(void) - { - printf("Hello world\n"); - } - ``` - -## 列表 - -使用列号 “1.” 或者 “*”,其后内容空格隔开,示例如下: - - 1. 一层列表 - 2. 一层列表 - 3. 一层列表 - * 二层列表 - * 二层列表 - -列表内标点符号使用规则: - -1. 当项目列表是术语、短语时,统一不加标点符号。 -2. 当项目列表是句子时,统一加句号。 -3. 特殊情况下如果不能避免出现短语和句子混合的情况,统一加句号。 -4. 项目列表前几项以分号结尾,最后一项以句号结尾的形式也可以接受。 - -## 注释符号 - -文档中会出现以下注释符号,代表不同的使用场景和提示程度。如果需要提示用户注意的信息,可以根据重要程度选择对应的注释符号。 -![image](figures/SafetyAlert.png) - -## 链接 - -链接需要确保指向的目标文件存在,否则会造成链接跳转不正常,不建议使用 HTML 的链接样式。 - -链接示例: - - 这是一个链接 [菜鸟教程](https://www.runoob.com)。 - -## 表格 - -Markdown 文档中请使用以下方式创建表格,不建议使用 HTML 的表格样式。 - - | 表头 | 表头 | - | ---- | ---- | - | 单元格 | 单元格 | - | 单元格 | 单元格 | - -单元格内标点符号使用规则: - -1. 当表格内一列全部是术语、短语时,统一不加标点符号。 -2. 当表格内一列全部是句子时,统一加句号。 -3. 特殊情况下如果不能避免出现短语和句子混合的情况,统一加句号。 - -## 常用词汇 - -| 不建议使用 | 建议使用 | -| ---- | ---- | -| 阀值 | 阈值 | -| 登陆 | 登录 | - -## 标点符号 - -- 单位与数字之间不建议加空格,比如 50m,10kg,64Kbit/s。 -- 对于有序/无序列表,如果是长句子,建议统一以句号结尾,如果是短语,结尾可不用标点。**重点是前后一致,要么都加,要么都不加**。 -- 中文文档使用全角标点。 -- 数字使用半角字符。 -- 感叹号使用场景为可能引发严重后果的操作或设备安全、人身安全的警告。其他场景不允许使用感叹号。 -- 文内引用其他文档件事添加书名号,同时建议增加引用文档的跳转链接。例如:安装 openEuler 系统,安装方法参考《[openEuler 22.03 LTS SP2 安装指南](https://docs.openeuler.org/zh/docs/22.03_LTS_SP2/docs/Installation/installation.html)》。 - -## docs 仓库提交 PR 和 issue - -1. PR 规范 - - - PR 标题清晰易懂,内容描述详细具体,一个 PR 只包含一次提交(git log,git reset commit id , git push -f),一个 PR 只涉及一个主题修改。 - - 需要 2 个回复 /lgtm,1 个 /approve,一般需要需求提出或文档相关责任人进行审核。 - - CI 格式检查成功,需要满足无 markdownlint 报错。 - - PR 需要关联 issue,每个特性需求 /bug 都要转 issue 跟踪,并关联对应版本号。 - - 新增文档需要同步修改目录文件 menu.json 文件。 - - 对于同步维护的分支,PR 需要分别提交到对应分支上。 - -2. issue 规范 - -有文档需要合入需要先新建 issue,内容表述清晰即可,如果是 bug 需要指出具体哪个版本哪本文档需要修改。 - -3. PR 提交建议 - - - 修改同一类问题(例如末尾句号)建议全文一致,不仅仅修改一处。 - - 建议将同一篇文档的低错问题修改条在一个 PR 里。 - - 建议在评论区使用 /sync + 版本号的方式将当前 PR 修改同步到其它分支。 - -4. 文档贡献中不受欢迎的行为 - -短时间内通过自动化工具,提交大量的PR,提交大量的处理诸如拼写错误,语法错误,日期错误,语句不通顺等“无害的错误”的修正。 -具体内容以及处理措施详见 [openEuler社区开发行为规范 V1.0](https://gitee.com/openeuler/community/blob/master/zh/technical-committee/governance/openEuler%E7%A4%BE%E5%8C%BA%E5%BC%80%E5%8F%91%E8%A1%8C%E4%B8%BA%E8%A7%84%E8%8C%83.md)。 - -## 资料PR检视Checklist - -- **规范和低错类**问题 - - 错别字或拼写错误;标点符号使用错误 - - 链接错误、空单元格、格式错误 - - 英文中包含中文字符 - - 界面和描述不一致,但不影响操作 - - 表述不通顺,但不影响理解 - - 版本号不匹配:如软件包名称、界面版本号 - - 相同内容在同一文档中写法不一致 - - 软件名称书写不规范 - - 描述口语化 - - 图形、表格不符合规范 - - 专有名词的写作不符合业界规范或拼写错误。 - - 成双成对的标点符号使用过程中有缺失另一半,或使用不规范 - - 标题和正文中,命令的大小写写法不一致 - - 图片不显示、超大,超出正文或页面宽度、变形、缺失或冗余 - - 命令解释和命令写在一起 - - 相同内容在同一个地方重复描述 - - 操作截图与实际环境不一致 - - 步骤中命令行和回显中的命令行不一致 -- **易用性**问题 - - 关键步骤错误或缺失,无法指导用户完成任务 - - 缺少必要的前提条件、注意事项等 - - 操作场景不明确 - - 图形、表格、文字等晦涩难懂 - - 逻辑不清晰,该分类、分项、分步骤的没有给出 - - 步骤不易理解和学习,如命令缺少描述 - - 已明确说明不支持的场景,又给了该场景下的使用方法或约束 - - 文档名称不规范,根据文档名称不能快速定位手册描述重点 - - 步骤描述和实际的操作不符 -- **正确性**问题 - - 技术原理、功能、规格、配套版本、OS 等描述和软件不一致,存在错误 - - 原理图、架构图等存在错误 - - 命令、命令参数、IP等错误 - - 命令无法完成对应功能 - - 界面错误,无法指导操作 - - 链接本来就是错误的,跳转的版本或内容不正确 - - 链接未失效,但是所需内容已更新不存在 - - 代码格式不规范,如未换行,或缩进不正确,括号没有匹配等 - - 命令行中有多余的空格,导致命令报错 -- **风险提示**问题 - - 对重要数据或系统存在风险的操作,缺少安全提示 -- **合规**问题 - - 违反法律法规,涉及政治、领土主权等敏感词 - - 内容侵权 - -## 参考 - -您如需获取更多写作技巧,请参考 [Markdown常用语法参考](./MarkDown常用语法参考.md)和[markdownlint检查规则](./markdownlint检查规则.md)。 diff --git a/scripts/build.js b/scripts/build.js index cc7d19618432ea777ae8fea2b950de8ed095e61d..469da72a165c042592d3bf2e233398ceaab700fb 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -67,7 +67,7 @@ function parseHref(href, label) { /** * 获取以 title 为 label 的节点 - * @param {string} filePath 文件路径 + * @param {number} level 标题等级 */ function getTitleNodes(filePath) { // 检测文件是否存在 @@ -88,38 +88,22 @@ function getTitleNodes(filePath) { // 解析获取 md 指定等级的标题 const md = markdownIt().use(markdownItAnchor, { permalink: false, - level: [2, 3], + level: [2], slugify: (str) => slugify(getMarkdownOrignalContent(str)), }); const tokens = md.parse(markdownContent, {}); const headings = []; - let lastH2; tokens.forEach((token, index) => { - if (token.type === 'heading_open' && token.attrs?.find(([key]) => key === 'id')?.[1]) { + if (token.type === 'heading_open' && token.tag === 'h2') { const id = token.attrs.find(([key]) => key === 'id')[1]; const mdPath = parseHref(`${filePath}#${id}`, ''); - if (token.tag === 'h2') { - if (lastH2 && lastH2.children.length === 0) { - delete lastH2.children; - } - - lastH2 = { - type: 'anchor', - label: getMarkdownOrignalContent(tokens[index + 1].content), - id: mdPath, - href: mdPath, - children: [], - }; - headings.push(lastH2); - } else if (token.tag === 'h3' && lastH2) { - lastH2.children.push({ - type: 'anchor', - label: getMarkdownOrignalContent(tokens[index + 1].content), - id: mdPath, - href: mdPath, - }); - } + headings.push({ + type: 'anchor', + label: getMarkdownOrignalContent(tokens[index + 1].content), + id: mdPath, + href: mdPath, + }); } });