openSUSE:构建服务概念临时修复
程序临时修复
程序临时修复 (PTF) 的概念在技术上与源链接非常相似。此概念的目的是在不进行其他额外补丁的情况下,为某个程序的特定版本提供特定的修复。这用于在维护更新发布之间修复客户问题。
示例工作流程
- 在 PTF 命名空间中创建一个项目,例如:PTF:<Bug # from b.n.c>
- 创建一个指向维护产品更新仓库快照的源链接,例如:SUSE:SLE-11:Update
- 通过添加源修订计数器(rev=...)到 Build_Service/Tips_and_Tricks#Example_of_a__link _link 文件来指定源修订。
- 此外,现在可以基于一个移动目标创建 PTF。除非补丁不再适用,否则这些 PTF 会在发布新的维护更新时自动重建。
- 拥有固定的修订源链接是默认策略。
- 创建补丁并在本地验证修复(osc build --local-package ...)
- 提交并将修复上传到构建服务
- 构建成功后,构建结果将交付给客户
PTF 命名空间由内部构建服务中的 PTF 项目定义。能够创建 PTF 命名空间中的项目的人员列在 PTF 项目中作为维护者。可以稍后授予创建的项目写访问权限给其他人员。因此,软件包的维护者可以在 L3 代理协调工作的同时准备 PTF。
此工作流程是通用的,并且独立于其他问题,例如版本和发布编号方案。
PTF 发布编号
发布编号方案应独立于如何在 openSUSE 构建服务中构建 PTF 的技术方面进行处理。尽管如此,此处描述了编号方案以供参考。
理想情况下,PTF 使用的发布编号方案应与官方维护更新使用的发布编号无缝集成。应满足以下要求
- 易于确定系统中是否安装了 PTF
- 已安装的 PTF 不应影响新维护更新的安装
- 较新的维护更新将使已安装的 PTF 过时
当前的编号方案
目前我们使用以下编号方案
<name>-<version>-<release>.PTF.<bug number>.<ptfrelease>
<name>-<version>-<release> 是 PTF 基于的软件包的名称和版本-发布字符串。发布编号的扩展用于清楚地表明该软件包是一个 PTF。
可以在 spec 文件中如下重写 Release 标签
将链接元素的“cicount”属性设置为“copy”。将 .spec 文件中的 Release 标签设置为如下所示:
Release: <CI_CNT>.3.PTF.284686.0
其中“3”是 PTF 源软件包的原始构建编号,“284686”是错误编号,“0”是 PTF 的序列号。
: