长期支持版本

    社区创新版本

      社区热补丁制作发布流程

      制作内核态/用户态热补丁

      热补丁仓库:https://gitee.com/openeuler/hotpatch_meta

      场景1. 在src-openEuler/openEuler仓下评论pr制作新版本热补丁

      制作内核态热补丁需在openEuler/kernel仓评论pr。

      制作用户态热补丁需在src-openEuler仓评论pr,现在支持src-openEuler/openssl,src-openEuler/glibc,src-openEuler/systemd

      1. 在已合入pr下评论制作热补丁
      • 从src-openeuler仓【支持openssl, glibc, systemd】评论已合入pr制作新版本热补丁。
      /makehotpatch [软件包版本号] [ACC/SGL] [patch list] [cve/bugfix/feature] [issue id] [os_branch]
      

      命令说明:使用多个patch用','分隔,需注意patch的先后顺序。

      image-20230629114903593

      • 从openeuler仓【支持kernel】评论已合入pr制作新版本热补丁。
      /makehotpatch [软件包版本号] [ACC/SGL] [cve/bugfix/feature] [issue id] [os_branch]
      

      image-20230816105443658

      评论后,门禁触发hotpatch_meta仓创建热补丁issue以及同步该pr。

      2. hotpatch_metadata仓自动创建热补丁issue、同步该pr

      pr评论区提示启动热补丁制作流程。

      image-20230816105627657

      随后,hotpatch_meta仓自动创建热补丁issue,并在hotpatch_meta仓同步该pr。

      热补丁issue用于跟踪热补丁制作流程。

      hotpatch_meta仓用于触发制作热补丁。

      image-20230816105850831

      点击查看热补丁issue链接内容。

      image-20230816110430216

      点击查看在hotpatch_meta仓自动创建的pr。

      image-20230816110637492

      3. 触发制作热补丁

      打开hotpatch_meta仓自动创建的pr,评论区可以查看热补丁制作信息。

      image-20230816110919823

      查看热补丁制作结果。

      如果热补丁制作失败,可以根据相关日志信息、下载chroot环境自行修改patch进行调试,重新修改pr提交后或者评论 /retest直到热补丁可以被成功制作。

      image-20230816111330743

      image-20230816111452301

      如果热补丁制作成功,可以通过Download link下载热补丁进行自验。

      image-20230816111007667

      打开Download link链接。

      image-20230816112118423

      进入Packages目录,可以下载制作成功的热补丁。

      image-20230816112420115

      若热补丁制作成功,可以对热补丁进行审阅

      场景2、从hotpatch_meta仓提pr制作新版本热补丁

      hotpatch_meta仓地址:https://gitee.com/openeuler/hotpatch_meta

      1. 提pr

      在hotpatch_metadata仓提pr。

      (1)阅读readme,根据热补丁issue模版和元数据文件hotmetadata_ACC.xml/hotmetadata_SGL.xml模板创建热补丁。

      image-20230817095228204

      pr内容:

      • patch文件。
      • 如果没有相应热补丁元数据hotmetadata_ACC.xml/hotmetadata_SGL.xml文件,则手动创建;否则修改热补丁元数据hotmetadata_ACC.xml/hotmetadata_SGL.xml文件。
      2. 触发制作热补丁

      若热补丁制作成功,可以对热补丁进行审阅

      场景3、从hotpatch_metadata仓提pr修改热补丁

      hotpatch_meta仓地址:https://gitee.com/openeuler/hotpatch_meta

      从hotpatch_meta仓提pr只能修改还未正式发布的热补丁。

      1. 提pr

      在hotpatch_meta仓提pr。

      (1)如果修改过程涉及元数据文件hotmetadata_ACC.xml/hotmetadata_SGL.xml文件内容变动,请阅读readme,按照元数据文件hotmetadata_ACC.xml/hotmetadata_SGL.xml模板进行修改。

      image-20230817095228204

      如果需要修改元数据文件中的热补丁issue字段内容,请确保添加的热补丁Issue已经存在。 用户不允许修改热补丁元数据文件中已被正式发布的热补丁的相关内容。

      pr内容:

      • patch文件。
      • 修改热补丁元数据hotmetadata_ACC.xml/hotmetadata_SGL.xml文件。
      2. 触发制作热补丁

      若热补丁制作成功,可以对热补丁进行审阅

      审阅热补丁

      1. 审阅热补丁pr

      确认可发布,合入pr。

      image-20230816112957179

      2. pr合入,回填热补丁issue

      自动在热补丁issue页面补充热补丁路径,包含src.rpm/arm架构/x86架构的rpm包,以及对应hotpatch.xml,用于展示热补丁信息。

      如果一个架构失败,强行合入,也可只发布单架构的包。

      image-20230816115813395

      • 查看热补丁元数据内容。

      热补丁元数据用于管理查看热补丁相关历史制作信息。

      hotmetadata_ACC.xml格式示例:

      <?xml version="1.0" ?>
      <ns0:hotpatchdoc xmlns:ns0="https://gitee.com/openeuler/HotPatch_metadata">
      	<DocumentTitle xml:lang="en">Managing Hot Patch Metadata</DocumentTitle>
      	<HotPatchList>
      		<Package name="源码仓库-版本号">
      			<hotpatch version="1" release="1" type="修复问题类型[cve/bugfix/feature]" inherit="0" status="unconfirmed">
      				<SRC_RPM>源码包下载路径(需要reealse正式路径)</SRC_RPM>
      				<Debug_RPM_X86_64>x86_64架构debuginfo包下载路径(需要reealse正式路径)</Debug_RPM_X86_64>
      				<Debug_RPM_Aarch64>aarch64架构debuginfo包下载路径(需要reealse正式路径)</Debug_RPM_Aarch64>
      				<patch>本次需要制作热补丁的patch包名1</patch>
      				<patch>本次需要制作热补丁的patch包名2</patch>
      				<patch>...</patch>
      				<issue id="cve编号/issue_id" hotpatch_issue_href="需要解决的issue链接"/>
      				<issue id="cve编号2/issue_id2" hotpatch_issue_href="需要解决的issue链接2"/>
      				<issue.../>
      				<hotpatch_issue_link>热补丁issue链接</hotpatch_issue_link>
      			</hotpatch>
      		</Package>
      	</HotPatchList>
      </ns0:hotpatchdoc>
      

      hotmetadata_SGL.xml格式示例:

      <?xml version="1.0" ?>
      <ns0:hotpatchdoc xmlns:ns0="https://gitee.com/openeuler/HotPatch_metadata">
      	<DocumentTitle xml:lang="en">Managing Hot Patch Metadata</DocumentTitle>
      	<HotPatchList>
      		<Package name="源码仓库-版本号">
      			<hotpatch name="SGL-issue1-issue2" version="1" release="1" type="修复问题类型[cve/bugfix/feature]" inherit="0" status="unconfirmed">
      				<SRC_RPM>源码包下载路径(需要realse正式路径)</SRC_RPM>
      				<Debug_RPM_X86_64>x86_64架构debuginfo包下载路径(需要reealse正式路径)</Debug_RPM_X86_64>
      				<Debug_RPM_Aarch64>aarch64架构debuginfo包下载路径(需要reealse正式路径)</Debug_RPM_Aarch64>
      				<patch>本次需要制作热补丁的patch包名1</patch>
      				<patch>本次需要制作热补丁的patch包名2</patch>
      				<patch>...</patch>
      				<issue id="cve编号/issue_id" hotpatch_issue_href="需要解决的issue链接"/>
      				<issue id="cve编号2/issue_id2" hotpatch_issue_href="需要解决的issue链接2"/>
      				<issue.../>
      				<hotpatch_issue_link>热补丁issue链接</hotpatch_issue_link>
      			</hotpatch>
      		</Package>
      	</HotPatchList>
      </ns0:hotpatchdoc>
      

      注意:src_rpm的download_link均来自openeuler的repo仓下正式发布的rpm包。

      image-20230817100308392

      3. 修改热补丁Issue
      • 将热补丁issue状态修改为”已完成“。
      • 为热补丁issue添加hotpatch标签。

      发布热补丁

      1、收集热补丁发布需求

      在release-management仓库每周update需求收集的issue下方,手动评论start-update命令,此时会收集待发布的热补丁和待发布的修复cve的冷补丁。后台会在hotpatch_meta仓库根据hotpatch标签查找已完成的热补丁issue。

      2、生成热补丁安全公告

      社区根据收集到的热补丁issue信息,生成热补丁安全公告xml文件。

      热补丁安全公告地址:https://repo.openeuler.org/security/data/hotpatch_cvrf/

      • 在热补丁安全公告文件新增HotPatchTree字段,记录和公告相关漏洞的热补丁,每个补丁按架构和CVE字段区分(Type=ProductName 记录分支,Type=ProductArch 记录补丁具体的rpm包)。

      image-20230908163914778

      3、Majun平台上传文件到openEuler官网,同步生成updateinfo.xml文件

      社区将生成的安全公告上传到openEuler官网,同时基于所收集的热补丁信息生成updateinfo.xml文件。

      image-20230908164216528

      updateinfo.xml文件样例:

      <?xml version="1.0" encoding="UTF-8"?>
      <updates>
           <update from="openeuler.org" type="security" status="stable">
                <id>openEuler-HotPatchSA-2023-1001</id>
                <title>An update for kernel is now available for openEuler-22.03-LTS-SP3</title>
                <severity>Important</severity>
                <release>openEuler</release>
                <issued date="2023-09-02"></issued>
                <references>
                     <reference href="https://nvd.nist.gov/vuln/detail/CVE-2023-3389" id="CVE-2023-3389" title="CVE-2023-3389" type="cve"></reference>
                </references>
                <description>A use-after-free vulnerability in the Linux Kernel io_uring subsystem can be exploited to achieve local privilege escalation.Racing a io_uring cancel poll request with a linked timeout can cause a UAF in a hrtimer.We recommend upgrading past commit ef7dfac51d8ed961b742218f526bd589f3900a59 (4716c73b188566865bdd79c3a6709696a224ac04 for 5.10 stable and 0e388fce7aec40992eadee654193cad345d62663 for 5.15 stable).(CVE-2023-3389)</description>
                <pkglist>
                     <hot_patch_collection>
                          <name>openEuler</name>
                          <package arch="aarch64" name="patch-kernel-5.10.0-153.12.0.92.oe2203sp3-ACC-1-1" release="1" version="1">
                               <filename>patch-kernel-5.10.0-153.12.0.92.oe2203sp3-ACC-1-1.aarch64.rpm</filename>
                          </package>
                          <package arch="x86_64" name="patch-kernel-5.10.0-153.12.0.92.oe2203sp3-ACC-1-1" release="1" version="1">
                               <filename>patch-kernel-5.10.0-153.12.0.92.oe2203sp3-ACC-1-1.x86_64.rpm</filename>
                          </package>
                     </hot_patch_collection>
                </pkglist>
           </update>
      </updates>
      
      4、openEuler官网可以查看更新的热补丁信息

      openEuler官网安全公告:https://www.openeuler.org/zh/security/security-bulletins/

      以”HotpatchSA“关键词搜索热补丁安全公告,打开安全公告查看发布热补丁详细信息。

      image-20230908163402743

      5、获取热补丁相关文件

      社区将热补丁相关文件同步至openEuler的repo源下,可以在各个分支的hotpatch_update目录下获取相应文件。

      openEuler的repo地址:https://repo.openeuler.org/

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份