流水线执行记录需要保留哪些信息:字段清单与留存做法

流水线执行记录要回答的是“这次运行用了什么、做了什么、结果如何、谁批准放行”。围绕可追溯、可复现、可审计,记录应保留四组信息:执行标识与触发来源、环境与输入、过程与结果、审批与处置。字段按必留、按需留、仅留引用分级,日志与产物保留引用地址而非全量复制。本文给出可直接照抄的字段清单、采集时点、角色分工、留存与权限设定方法,以及一份填写示例和验收检查表。



要点总览(TL;DR)


  • 执行记录按四组信息组织:执行标识与触发来源、环境与输入、过程与结果、审批与处置,覆盖定位、复现与放行判断。
  • 字段按必留、按需留、仅留引用三级取舍:日志、产物、镜像保留引用地址与校验值,不复制正文,控制存储成本与敏感信息暴露面。
  • 采集以自动写入为主,人工只补录变更单关联、失败原因归类、回滚说明等系统无法判断的信息,并约定采集失败时的兜底与阻断规则。
  • 留存期限按记录类型分层设定,结构化字段长期保存,日志按排查窗口保存,密钥只留引用名称;权限与项目可见范围一致,敏感字段单独控制。
  • 用可追溯、可复现、可审计三项逐条核对,必留字段缺失、引用失效或审批为空即判定记录不合格,不得作为发布依据。


先定记录边界:哪些信息必须留、哪些只留引用


执行记录的价值在于事后能定位“哪次运行、基于哪份代码、产出了什么、谁放行”,因此字段取舍先看用途,再看成本。建议在列字段前先确定三级分类,再逐项归位。


分级 判断依据 典型内容 保存方式
必留 缺少后无法定位运行、无法复现代码与产物、无法判断是否合规放行 运行编号、流水线名称与版本、触发人与方式、提交哈希与分支、产物标识、各阶段状态与起止时间、准入结论与审批人 结构化字段,随记录长期保存
按需留 用于问题排查、度量或争议追溯,缺失不影响基本定位 失败原因描述、重试次数与原因、测试覆盖率、依赖清单明细、执行节点信息 结构化字段,按留存期限保存
仅留引用 体积大、更新频繁或含敏感内容,复制成本高且无必要 完整构建日志、测试报告附件、构建产物文件、镜像、配置文件快照 保存地址、校验值与访问入口,不复制正文

全量复制日志和产物会快速推高存储成本,也会扩大敏感信息的暴露面。日志中常含环境变量、内部地址甚至凭据片段,产物则可能包含未公开的业务数据。保留引用地址加校验值,既能证明“当时确实存在这份内容”,又便于按权限控制访问。


记录边界还要与相邻环节分工。发布准入与质量门禁负责“什么条件下允许放行”的规则设计,执行记录负责如实记下这次运行的输入、结果和放行结论;流水线与平台的对接配置属于工具链集成范畴,记录规范只需约定从集成中取哪些字段、以什么口径写入。边界清楚,字段清单才不会膨胀成平台配置手册。



核心字段清单:执行记录应包含的四组信息


以下清单按四组信息组织,可直接作为字段规范的初稿。标注“必留”的字段建议设为流水线模板的强制项,缺失时阻断记录归档;“按需”字段由团队按业务复杂度增补。


第一组:执行标识与触发来源


字段 用途 分级
流水线名称与版本 区分同名流水线的不同配置,复现时知道用哪版脚本 必留
运行编号 唯一标识一次执行,作为日志、产物、审批的关联主键 必留
触发方式 区分提交触发、定时触发、手动触发、上游流水线触发 必留
触发人 手动触发时记录操作者;自动触发时记录提交人或调度账号 必留
关联提交与分支 定位代码来源,支持按提交反查运行 必留
关联需求或变更单 把技术运行与业务变更对应,支撑审计与影响分析 按需

第二组:环境与输入


字段 用途 分级
代码版本(提交哈希、分支、标签) 复现的起点,精确到提交而非仅分支名 必留
构建产物标识(名称、版本号、校验值) 证明产物与本次运行的对应关系,防止产物被替换 必留
依赖与镜像版本 排查“代码没变但结果变了”的环境漂移问题 按需
运行环境与配置版本 记录目标环境、配置模板版本或配置中心版本号 必留
运行参数 记录本次使用的非敏感参数取值 按需
密钥引用 只记录密钥名称或凭据库条目编号,不记录明文 必留(引用形式)

第三组:过程与结果


字段 用途 分级
各阶段名称、起止时间、执行节点 定位耗时瓶颈与节点异常 必留
步骤状态(成功、失败、跳过、中止) 还原执行路径,判断是否完整跑完 必留
日志引用地址 排查细节,按权限访问 仅留引用
产物引用地址与校验值 取回产物并验证完整性 仅留引用
测试与质量结果(通过率、失败用例、门禁结论) 支撑质量判断与趋势度量 必留(结论)、按需(明细)
失败原因与重试记录 区分环境抖动与真实缺陷,避免重试掩盖问题 按需

第四组:审批与处置


字段 用途 分级
发布准入结论 记录本次是否满足放行条件及依据 必留
审批人与审批时间 明确放行责任,支撑审计 必留
回滚动作与回滚目标版本 出现问题时还原现场,评估影响范围 按需(发生即必留)
修复动作与关联缺陷 把失败运行与后续修复串起来 按需


采集与写入:字段从哪里来、由谁在什么时点写入


字段可靠性取决于采集方式。原则是:能从流水线工具、代码库、制品库自动获取的字段一律自动写入,人工只补录系统无法判断的业务信息,例如变更单关联、失败原因归类、回滚决策说明。


字段 来源 写入时点 负责人
运行编号、流水线版本、触发方式与触发人 流水线工具自动生成 触发时 流水线维护者配置模板
提交哈希、分支、关联工作项 代码库与项目管理工具 触发时 开发提交人确保提交信息规范
阶段起止时间、步骤状态、执行节点 流水线工具自动采集 执行中实时写入 流水线维护者
日志与产物引用、校验值 流水线工具与制品库 阶段结束时 流水线维护者
测试与质量结论 测试工具回传 测试阶段结束时 测试负责人确认口径
失败原因归类、重试说明 人工补录 运行结束后 当次处理人
准入结论、审批人、回滚动作 审批流程与人工填写 发布前后 发布负责人

三个写入时点各有重点。触发时写入标识与输入,保证运行一开始就有可追溯的主键;执行中持续写入阶段状态与时间,便于实时观察阻塞;结束后补齐结果结论、失败归类和审批处置,形成完整记录。


采集失败要有兜底。常见情况包括集成中断导致状态未回传、测试工具未上报结果、产物上传失败。建议约定:状态未回传时,记录标记为“数据不完整”并保留原始日志链接,由流水线维护者在当日内补录或标注原因;关键必留字段缺失的运行不得作为发布依据;连续多次采集失败应作为工具链问题单独跟踪,而不是逐次人工修补。



角色与交付物:谁负责记录、谁负责核对


记录质量靠分工而非自觉。建议明确三类角色,每类角色对应可检查的交付物。


角色 职责 交付物
流水线维护者 在流水线模板中固化必留字段,配置自动采集与引用写入,处理采集失败 字段模板配置、采集异常处理记录
开发提交人 保证提交信息包含关联工作项编号,触发后确认运行归属正确 规范提交记录、关联关系
测试负责人 确认测试与质量结果的上报口径,核对结论字段与实际报告一致 质量结论字段、口径说明
发布负责人 填写准入结论、审批信息,发生回滚时记录回滚目标与原因 审批记录、回滚说明
记录核对人(可由质量或工程效能角色兼任) 按周期抽查执行记录完整性,汇总缺失项并推动模板修正 抽查记录、缺失项清单、改进项

核对建议按周或按发布批次进行,抽查范围覆盖成功与失败运行。核对输出不是打分,而是两类结论:模板需要补哪些自动采集项,以及哪些环节的人工补录可以取消。这样记录规范会随使用逐步收敛,而不是越加越重。


当团队已使用 ONES 管理需求与任务时,可以把执行记录与工作项关联起来:ONES DevOps 解决方案支持集成 Jenkins、GitLab CI 等第三方流水线工具,集成后自动同步流水线数据、更新执行状态和日志,并在项目、迭代、需求中呈现代码提交、流水线构建与产品发布过程。这样“关联需求或变更单”这类字段可以直接从工作项关联中获得,减少人工补录;审批结论与回滚说明也可随发布记录一并留档,便于后续按项目追溯。



留存期限、存储与访问权限怎么定


留存策略按记录类型分层设定,依据是审计要求、问题回溯窗口和存储成本。以下为常见做法,具体期限需结合行业合规与内部制度确定。


记录类型 建议留存思路 存储位置 访问权限
执行记录结构化字段(标识、输入、状态、审批) 长期保存,覆盖审计周期与产品生命周期 流水线平台或研发管理平台数据库 项目成员可读,跨项目需授权
完整日志 按排查窗口设定,如数月,重要发布可延长 日志系统,记录中保存引用地址 按角色开放,含敏感内容的日志限维护者与安全角色
构建产物与镜像 与线上版本存续期一致,下线版本按制度清理 制品库,记录中保存标识与校验值 发布与运维角色可下载,其他角色按需申请
测试报告与质量明细 覆盖质量追溯周期 测试管理工具,记录中保存结论与链接 项目成员可读
密钥与敏感参数 不进入执行记录正文,仅保留引用名称 凭据管理系统 按最小权限授予,访问留痕

权限设计遵循两条规则:记录可读范围与项目可见范围一致,避免执行记录成为信息孤岛;敏感字段单独控制,密钥、令牌、内部地址在日志输出前做脱敏,记录中只出现引用标识。审计需要查看时,通过授权访问引用地址,而不是把敏感内容复制进记录。



示例:一次发布流水线的执行记录长什么样


以下为演示情景,展示字段如何填写与引用。


字段组 填写内容
执行标识 流水线:订单服务发布流水线 v12;运行编号:RUN-20240612-037;触发方式:手动;触发人:张工;分支:release/2.4;提交:a1b2c3d;关联需求:ORD-1187
环境与输入 目标环境:预发布;配置版本:cfg-2.4.3;镜像:order-service:2.4.3(校验值 sha256:9f…);密钥引用:cred-prod-db(不记录明文)
过程与结果 构建阶段 10:02–10:06 成功,节点 builder-03;单元测试 10:06–10:11 成功,通过率 100%;集成测试 10:11–10:24 成功,用例 86/86;日志引用:log://run-037;产物引用:artifact://order-service/2.4.3
审批与处置 准入结论:通过;审批人:李工;审批时间:10:31;发布结果:成功;回滚:无

失败重试场景需要补充三类信息:首次失败发生在哪个阶段、失败原因归类(环境问题、用例失败、依赖超时等)、重试的触发人与重试次数。例如集成测试首次在 10:18 因数据库连接超时失败,归类为环境问题,由张工在 10:20 重试一次后通过。记录中保留两次运行的编号与各自日志引用,避免只留最终成功结果而丢失问题线索。



完成检查:记录是否可追溯、可复现、可审计


用以下清单逐项核对,全部通过方可认为记录合格。


维度 检查项 通过标准
可追溯 运行编号唯一且可检索;触发人与触发方式明确;关联提交、分支、需求可反查 任取一条线上版本,能在记录中定位到对应运行与代码提交
可复现 代码版本精确到提交;产物标识与校验值齐全;配置版本与依赖版本可查;密钥以引用形式存在 按记录可重新取回同一份代码与产物,并说明当时环境配置
可审计 准入结论、审批人与时间完整;失败与重试有说明;回滚有目标版本与原因;敏感信息未明文出现 审计人员无需询问当事人即可判断放行是否合规
阻断条件 必留字段缺失且未标注原因;日志或产物引用失效;审批信息为空 出现任一项,该运行记录判定为不合格,不得作为发布依据

检查频率可与发布节奏对齐:每次发布前核对当次记录,按周期抽查历史记录。发现的问题回流到字段模板与采集配置,形成“记录—核对—修正模板”的循环,执行记录才能长期保持可用。



常见问题


流水线执行记录和发布审批记录是同一份东西吗,需要分开保存吗?


两者内容有交集,但职责不同。执行记录回答“这次运行用了什么代码、产出了什么、各阶段结果如何”,发布审批记录回答“在什么条件下、由谁批准放行”。实践中可以让审批结论、审批人与时间作为执行记录的一组字段存在,同时审批流程本身保留独立的审批单据。这样执行记录能完整反映一次运行的全貌,审批单据也能按审批制度单独归档和检索。需要避免的是两边各记一半、互不关联,导致事后无法把放行结论对应到具体运行编号。


团队规模小、发布频率低,字段清单可以精简到多少?


可以先保留支撑三项判断的最小集合:能定位到哪次运行(运行编号、流水线名称与版本、触发人与方式、提交哈希与分支)、能取回当时的产物(产物标识与校验值、配置版本、密钥引用名称)、能判断放行是否合规(准入结论、审批人与时间)。失败原因归类、依赖明细、覆盖率等按需字段可以后补。精简的前提是必留字段仍由流水线模板强制写入,而不是靠人记得填。随着发布频率上升或出现审计要求,再按需逐项增补,比一开始列几十个字段却无人维护更可持续。


流水线工具自动采集的字段和人工补录的字段冲突时,以哪个为准?


以自动采集的系统数据为准,人工补录只负责系统无法判断的业务含义。例如阶段状态与起止时间由流水线工具写入,人工不应改写;失败原因归类、变更单关联、回滚决策说明属于人的判断,由当次处理人填写。出现冲突时,保留原始采集值,人工说明写入单独的说明字段,并注明修改人与时间。若发现自动采集本身有误,应作为工具链配置问题单独跟踪修正,而不是逐次在记录里手工覆盖,否则记录会逐渐失去可信度。


日志和产物只留引用地址,审计时引用失效了怎么办?


引用失效意味着记录的可复现性被破坏,应视为不合格项处理。预防上可以做三件事:为引用保存校验值,便于判断内容是否被替换;日志与产物的留存期限不短于对应结构化记录的审计周期;清理下线版本产物前核对是否仍有审计或回溯需求。发生失效时,先确认是否有备份或归档副本,再在记录中标注失效原因与处理过程。若同类失效反复出现,需要调整留存策略或存储位置,而不是在单条记录上反复补救。


已经用了 ONES 管理需求和任务,执行记录里的关联字段还需要人工填吗?


可以大幅减少人工补录。ONES DevOps 解决方案支持集成 Jenkins、GitLab CI 等第三方流水线工具,集成后自动同步流水线数据、更新执行状态和日志,并在项目、迭代、需求中呈现代码提交、流水线构建与产品发布过程。因此“关联需求或变更单”这类字段可以直接从工作项关联中获得。同步的具体字段范围以实际集成为准,团队仍应在字段规范中明确哪些字段取自集成、哪些需要人工补录,并对集成中断的情况保留兜底做法。