制品保留策略怎么做:分级规则、清理流程与检查清单

制品保留策略要解决的是“留什么、留多久、谁来清、怎么证明清对了”。做法可以拆成四步:先按制品类型和用途分级,再为每级写清保留期限与判定字段,然后把规则接到流水线和制品库的自动动作上,最后用检查清单验证执行效果。发布版本与合规证据长期保留,日常构建产物按窗口滚动清理,临时调试产物短期保留,是多数团队可用的起点。



要点总览(TL;DR)


  • 制品保留策略按“分级—字段—执行—检查”四步落地:先按用途把制品分为发布版本、候选版本、日常构建、临时调试产物、依赖与基础镜像五级,再为每级确定期限与存储位置。
  • 保留期限取回滚窗口、合规与审计要求、客户支持周期三者中的最长者作为下限,再结合存储成本调整;发布版本长期保留,日常构建按滚动窗口清理。
  • 每条策略记录需包含制品标识、保留等级、创建时间、保留截止时间、清理动作和豁免标记,判定条件可按时间、版本标签或关联发布记录与工作项组合使用。
  • 规则要接入流水线与制品库形成自动动作链:产出时写入元数据、按标签定级、定时计算到期清单、清理前通知、到期归档或删除、留存清理日志与归档清单。
  • 策略是否生效看四点:所有制品类型都有对应等级、清理按计划发生且无误删、删除与归档记录可追溯、按季度评审并同步修订执行配置。


先定分级:哪些制品必须留、留多久


分级是保留策略的第一层判断。团队常见的失误是给所有制品设同一个期限:期限太短,回滚和审计时找不到包;期限太长,制品库被日常构建塞满,检索和备份成本上升。合理的做法是先按“用途”分五类,再给每类确定保留期限和存储位置。


保留期限的确定依据主要有三个:回滚窗口,即线上问题发生后团队需要回退到多久之前的版本;合规与审计要求,即所在行业或客户合同规定的证据留存年限;客户支持周期,即仍在维护期内的版本需要保留对应安装包和补丁包。三个依据取最长者作为下限,再结合存储成本调整。


等级 典型制品 保留期限 存储位置 责任人
L1 发布版本 正式对外发布的安装包、镜像、补丁包 长期保留,覆盖产品支持周期与合同约定年限 正式制品库,独立于日常构建库 发布负责人
L2 候选版本 发布候选包、灰度包、验收测试包 保留至下一正式版本发布后一个回滚窗口 正式制品库的候选目录 发布负责人
L3 日常构建 主干与分支的持续集成产物 按滚动窗口保留,如最近若干天或最近若干次成功构建 日常构建库,可压缩存储 制品库管理员
L4 临时调试产物 问题复现包、临时验证包、性能测试包 短期保留,问题关闭后进入清理队列 临时目录,单独标记 提交人
L5 依赖与基础镜像 第三方依赖包、基础镜像、工具链镜像 跟随引用它的制品保留;无引用后按窗口清理 依赖仓库或镜像仓库 制品库管理员

这张表是模板,不是标准答案。团队应把“保留期限”一列替换成自己可执行的数值或规则,例如“最近30天”或“最近50次成功构建”,并注明依据来源,便于后续评审时解释为什么这样定。



写清规则:保留策略的字段与判定条件


分级结论要变成机器和人都能判定的规则,需要落到具体字段上。字段设计的目标是:任意一个制品进入制品库时,系统或管理员能根据字段直接算出它的保留截止时间,并知道到期后该做什么。


建议每条策略记录至少包含以下字段:


  • 制品标识:名称、版本号、哈希值或制品库内的唯一路径,确保能唯一定位。
  • 保留等级:对应L1至L5,决定后续期限与动作。
  • 创建时间:制品入库时间,作为期限计算的起点。
  • 保留截止时间:由创建时间加等级期限算出,或由发布记录、工作项关闭时间触发计算。
  • 清理动作:到期后执行归档、删除或转冷存储,需明确动作类型。
  • 豁免标记:标记该制品不参与自动清理,并记录豁免原因与审批人。

判定条件决定规则何时生效。常见三类:按时间判定,到期即进入清理队列;按版本标签判定,带正式发布标签的制品自动升为L1;按关联记录判定,制品关联的发布记录或工作项关闭后,临时产物进入清理倒计时。三类条件可以组合使用,例如“带发布标签且关联发布记录”的制品才允许升为L1。


豁免与例外需要单独设计标记方式。客户定制版本应标记客户名称与合同支持期;问题复现包应关联缺陷单号,缺陷关闭后自动取消豁免;审计取证包应标记审计项目与取证日期,保留期限按审计要求单独设定。豁免标记必须带审批人和到期复核时间,避免“永久豁免”变成无人清理的死角。



落地执行:从规则到自动清理与归档


规则写在文档里不会自动生效,需要接入流水线与制品库,形成一条可重复执行的动作链。这条链的输入是制品元数据、版本标签和发布记录;动作包括打标签、设置保留期、到期归档或删除、清理前通知;输出是清理日志、归档清单和可回溯的删除记录。


具体执行可以按以下顺序组织:


  1. 制品产出时写入元数据:流水线在构建完成后,把制品标识、创建时间、构建来源分支和关联工作项写入制品库元数据。
  2. 按标签自动定级:带正式发布标签的制品自动进入L1并设置长期保留;候选标签进入L2;无标签的日常构建默认进入L3。
  3. 定时任务计算到期清单:制品库按日或按周扫描,算出即将到期的制品,生成待清理清单。
  4. 清理前通知与缓冲期:向制品责任人发送到期通知,给出缓冲期,允许在缓冲期内申请豁免或延期。
  5. 执行归档或删除:缓冲期结束后,按策略执行归档到冷存储或删除,并记录操作人、时间、制品标识和动作结果。
  6. 输出记录并留存:清理日志与归档清单进入可查询的存储,作为回滚与审计的证据。

完成标志是:任意一个被清理的制品都能在日志中查到“何时、按哪条规则、由谁或哪个任务清理、清理前是否通知、是否被豁免”。缺少其中任何一项,策略就还停留在半自动状态。


在研发管理侧,制品与发布记录、需求和工作项的关联是判定条件能否成立的前提。ONES 的 ALM 方案覆盖需求、基线、版本、变更、测试与发布,可围绕需求、基线、版本和变更建立统一管理对象,支撑交付结果回溯;其 DevOps 方案可集成 Jenkins、GitLab CI 等流水线工具,同步流水线数据、执行状态和日志,并在项目、迭代、需求中可视化构建与发布过程。这些能力可以帮助团队把“制品对应哪个版本、哪次发布、哪个需求”记录清楚,为保留策略的判定条件提供关联依据。制品库层面的保留期设置与到期自动清理,需结合团队实际使用的制品库工具确认。



角色分工与交付物


保留策略无人维护,通常是因为职责没有落到具体角色和交付物上。建议至少明确五类角色,并让每个角色在策略生命周期中有明确的输入和输出。


角色 主要职责 关键交付物
策略负责人 制定分级与期限规则,组织评审,处理豁免审批 保留策略文档、分级对照表、豁免审批记录
制品库管理员 配置自动清理任务,监控执行结果,处理误删与异常 清理任务配置、清理日志、异常处置记录
研发与测试 按规则打标签,提交临时产物时注明用途与关联工作项 制品标签、临时产物说明、豁免申请
发布与运维 确认发布版本进入L1,维护回滚窗口,提出期限调整需求 发布记录、回滚窗口说明、期限调整申请
审计或质量 抽查清理记录与归档清单,确认可追溯性满足要求 抽查报告、审计取证包清单

策略评审建议每季度一次,重点看三件事:清理任务是否按计划执行、豁免清单是否在增长、回滚窗口是否发生变化。发生重大发布节奏调整、客户合同变更或合规要求更新时,应触发临时评审。评审输出是策略文档的修订记录和下一周期的执行计划。



示例:一条发布制品的保留与清理过程


以下为演示情景,用于说明规则如何在一个制品上依次生效。


某产品团队在3月10日完成一次正式版本构建,流水线产出安装包并推送至制品库。构建任务自动写入元数据:制品标识为产品名加版本号,创建时间为3月10日,关联发布记录和需求条目。由于该制品带有正式发布标签,系统按规则将其定为L1,保留截止时间设为产品支持周期结束日,存储位置为正式制品库。


发布负责人当天核对发布记录,确认版本号、需求范围和测试结论一致,并在发布记录中登记该制品路径。这一步的判定点是:只有发布记录完整、测试结论通过的制品才允许保留L1标签,否则退回L2候选状态。


三个月后,团队需要排查一个线上问题,运维从正式制品库取出该版本重新部署,验证问题是否由后续版本引入。由于L1制品长期保留,回滚和复现都不需要临时找包。问题定位后,测试人员提交了一个复现包,标记为L4并关联缺陷单号,缺陷关闭后该复现包进入清理倒计时。


次年策略评审时,产品支持周期延长,策略负责人将该版本的保留截止时间同步延后,并在策略文档中记录变更原因。整个过程中,每个节点都有对应记录:构建元数据、发布记录、缺陷单、清理日志和评审修订记录,形成可追溯的链条。



完成检查:策略是否真正生效


策略是否生效,不能只看文档是否写完,要看制品库里的实际状态。以下检查清单可按季度逐项核对。


检查项 通过标准 证据 负责人
规则覆盖度 所有制品类型都能对应到L1至L5中的某一级,无未分类制品 制品库分类统计、未分类制品清单 制品库管理员
期限可计算 每个制品都有保留截止时间或明确的期限计算规则 元数据抽样记录 策略负责人
清理按计划发生 清理任务按设定频率执行,无长期未运行的记录 清理任务运行日志 制品库管理员
无误删 抽查期内无L1制品被误删,误删事件均有处置记录 删除记录、异常处置单 制品库管理员
可追溯 任意一次删除或归档都能查到规则依据、操作时间和操作人 清理日志、归档清单 审计或质量
豁免受控 豁免制品均有原因、审批人和复核时间,无永久豁免 豁免清单 策略负责人
定期复核 策略按季度评审,修订有记录并同步到执行配置 评审纪要、修订记录 策略负责人

检查中发现的问题应回到对应环节修正:覆盖度不足就补分级,期限算不出就补字段,清理未执行就查任务配置,误删就收紧标签判定。每次复核后更新策略文档版本号,让执行配置与文档保持一致,策略才能持续有效。



常见问题


发布版本已经长期保留,为什么还要单独设候选版本等级?


候选版本处于“可能发布、也可能被替换”的状态,直接按发布版本长期保留会占用正式制品库空间,直接按日常构建清理又可能在回滚时找不到包。单独设L2等级,把保留期限绑定到“下一正式版本发布后一个回滚窗口”,既能覆盖灰度与验收阶段的问题复现,也能在正式版本稳定后自然释放空间。关键动作是发布负责人确认正式版本上线后,及时把候选目录中不再需要的包转入清理队列。


临时调试产物关联的缺陷长期未关闭,清理任务应该怎么处理?


这类制品不应因为缺陷未关闭就无限期保留。建议在豁免标记中同时记录缺陷单号和复核时间,到期后由制品库管理员通知提交人确认:仍需复现则续期并更新复核时间,已无复现价值则取消豁免、进入清理。缺陷关闭时系统自动取消豁免并启动清理倒计时。这样既保证问题可复现,也避免临时目录变成长期堆积区。


清理任务误删了需要保留的制品,应该怎么补救和预防?


补救分两步:先从归档清单或备份中恢复制品,再核查删除记录,确认是标签缺失、等级判定错误还是豁免未生效导致。预防上做三件事:清理前保留缓冲期并通知责任人;对L1制品设置删除保护,只允许归档不允许直接删除;每次误删事件登记处置记录,并在季度评审时回看是否需要在标签判定规则上收紧条件。


团队使用的制品库工具不支持按元数据自动定级,策略还能落地吗?


可以分阶段落地。先在半自动状态下运行:流水线产出时按命名规范写入版本标签和构建来源,制品库管理员按周导出制品清单,用脚本或表格算出到期清单,人工确认后执行归档或删除,并保留操作记录。等工具能力具备或完成替换后,再把定级和到期计算转为自动任务。关键是清理日志和归档清单从第一天起就完整留存,保证回滚与审计有据可查。


制品保留策略和研发配置基线管理是什么关系?


保留策略管的是可交付资产本体留多久、放在哪、到期怎么处置;配置基线管的是哪些配置项在某个时点被正式确认、后续变更如何受控。两者衔接点在发布版本:基线确认的版本应进入L1长期保留,基线变更后旧版本仍需按回滚窗口保留。本文只讨论制品本体的保留与清理,基线的建立与维护属于另一主题。