4. Git仓库结构设计:仓库目录规划、分支策略与版本管理
事故响应台账的GitOps配置同步机制,其底层依赖一个严谨、可审计的Git仓库结构。仓库结构设计直接决定了变更追溯的清晰度、多环境部署的可靠性以及紧急修复的效率。本节从目录规划、分支策略、标签与版本管理三个维度展开。
4.1 仓库目录规划
采用单仓库多环境模式,将事故响应台账的配置、部署清单、自动化策略统一存放在一个Git仓库中。目录结构按功能域分层,避免配置散落。
| 目录/文件 | 用途 | 说明 |
|---|---|---|
incident-config/ |
台账核心配置 | 包含事故分类、严重等级、SLA阈值、通知模板等YAML/JSON文件 |
deploy/ |
部署清单 | Kubernetes manifests、Helm values、Docker Compose文件,按环境分目录 |
automation/ |
自动化策略 | GitOps同步规则、Webhook触发器、审批流定义 |
scripts/ |
辅助脚本 | 配置校验、数据迁移、健康检查脚本 |
docs/ |
文档 | 仓库使用说明、变更日志、架构图 |
.gitlab-ci.yml 或 .github/workflows/ |
CI/CD流水线 | 自动校验、构建、部署、标签生成 |
实践建议: 在
incident-config/ 下按事故类型(如 severity-p1/、severity-p2/)进一步划分子目录,便于权限控制和变更影响范围评估。
4.2 分支策略
采用主干开发 + 环境分支 + 热修复分支的三层分支模型,兼顾持续交付速度与事故场景下的紧急响应能力。
4.2.1 分支类型与职责
| 分支名称 | 基线来源 | 生命周期 | 合并目标 | 典型触发场景 |
|---|---|---|---|---|
main |
— | 永久 | — | 保护分支,仅允许合并请求(MR/PR) |
feature/<id>-<desc> |
main |
短期(1~3天) | main |
新增事故分类、修改SLA阈值 |
hotfix/<incident-id> |
main 或 release/<version> |
极短(小时级) | main + 同步到活跃环境分支 |
生产事故导致台账配置错误、同步中断 |
release/<version> |
main |
按发布周期(周/月) | main |
版本发布前集成测试 |
事故场景特别约束:
hotfix/ 分支必须关联事故记录编号(如 hotfix/INC-20250401),且合并后需在 commit message 中引用事故台账链接,确保端到端可追溯。
4.2.2 分支工作流示例
- 日常变更:从
main创建feature/分支 → 修改配置 → 提交 MR → 代码审查 → 合并到main→ GitOps 自动同步到预发环境验证 → 手动触发生产同步。 - 紧急热修复:从
main创建hotfix/分支 → 修复配置 → 跳过完整审查(需事故经理审批)→ 合并到main→ 自动同步到生产环境 → 事后补全审查记录。 - 版本发布:从
main创建release/分支 → 冻结配置变更 → 集成测试 → 打标签 → 合并回main。
4.3 标签与版本管理
标签是GitOps同步的锚点,GitOps Operator 通过监听特定标签模式来触发环境同步。版本管理遵循 语义化版本 2.0.0,并附加事故响应元数据。
4.3.1 标签命名规范
| 标签类型 | 格式示例 | 说明 |
|---|---|---|
| 正式版本 | v2.1.0 |
语义化版本,主版本.次版本.补丁 |
| 预发布版本 | v2.1.0-rc.1 |
候选版本,用于预发环境验证 |
| 热修复版本 | v2.1.1-hotfix.INC-456 |
补丁版本 + 事故编号,紧急发布 |
| 环境同步标签 | env/prod/v2.1.0 |
GitOps 同步锚点,Operator 监听此标签 |
4.3.2 版本号递增规则
- 主版本(MAJOR):事故台账配置模型发生不兼容变更,如事故分类体系重构。
- 次版本(MINOR):新增事故类型、SLA 模板、通知渠道等向下兼容的功能。
- 补丁(PATCH):修复配置错误、同步逻辑缺陷、文档修正。
- 热修复补丁:在补丁版本基础上立即递增,并附加
-hotfix.<incident-id>后缀。
GitOps 同步触发机制: 当 CI/CD 流水线在
main 分支上创建 env/prod/* 标签时,ArgoCD / Flux 自动检测到标签变更,将对应版本的配置同步到生产环境。事故热修复场景下,创建 env/prod/v2.1.1-hotfix.INC-456 标签即可触发紧急同步,无需手动干预。
4.3.3 标签创建自动化示例
# 在 CI/CD 流水线中自动创建标签(GitHub Actions 片段)
- name: Create and push Git tag
run: |
VERSION="v$(cat VERSION)"
if [[ "${{ github.event_name }}" == "push" && "${{ github.ref }}" == "refs/heads/main" ]]; then
git tag "env/prod/${VERSION}"
git push origin "env/prod/${VERSION}"
fi
避坑提示: 禁止手动在仓库中创建或删除
env/* 标签,必须通过 CI/CD 流水线执行。手动操作容易导致 GitOps 同步状态与仓库实际状态不一致,引发配置漂移事故。
4.4 仓库结构设计检查清单
| 检查项 | 验收标准 | 优先级 |
|---|---|---|
| 目录分层 | 配置、部署、自动化、脚本、文档五层分离 | P0 |
| 分支保护 | main 分支启用 MR 强制审查,禁止直接推送 |
P0 |
| 热修复流程 | hotfix/ 分支必须关联事故编号,合并后补审查 |
P0 |
| 标签自动化 | CI/CD 自动创建 env/* 标签,禁止手动操作 |
P1 |
| 版本语义化 | 严格遵循 SemVer 2.0.0,热修复附加事故编号 | P1 |
| 审计追溯 | 每个 commit 和 tag 可关联到事故台账记录 ID | P1 |
仓库结构设计是事故响应台账 GitOps 配置同步的基石。目录规划决定了配置的可维护性,分支策略保障了日常变更与紧急修复的并行效率,标签与版本管理则为 GitOps 同步提供了精确的锚点。三者协同,才能实现“配置即代码、变更可追溯、同步可自动化”的 SRE 目标。