Skip to content

DevOps

DevOps 关注的是让软件从代码变更到生产运行形成一条可重复、可观测、可恢复的交付链路。

生命周期

一条完整链路通常包含计划、编码、验证、构建、制品存储、发布、部署、运行、观测和反馈。工具不是目标,缩短反馈时间、降低变更风险并提高恢复能力才是目标。

基本原则

  • 所有生产变更都可追溯到版本控制中的代码、配置或审批记录。
  • 同一制品在环境之间晋级,不为测试和生产分别重新构建。
  • 自动化任务应可重复执行,失败后能够安全重试。
  • 发布前定义验证方式和回滚条件,发布后立即验证用户可感知结果。
  • 不以“装了某个工具”代替流程、权限和责任边界。

环境模型

常见环境包括本地开发、集成测试、预发布和生产。环境数量不是越多越好,每套环境都应有明确用途、责任人、数据策略和退出条件。

配置原则

  • 代码与环境配置分离;配置结构随代码版本管理,敏感值进入 Secret 系统。
  • 使用明确的配置契约,在启动阶段校验必填项、类型和取值范围。
  • 避免在镜像或前端静态文件中写入运行时 Secret。
  • 前端可公开配置应在构建期或运行期明确注入,并视为用户可见数据。
  • 记录配置变更,确保能够比较环境差异并回滚。

环境晋级

生产发布应使用已经通过测试的同一制品,通过环境级配置改变连接地址、容量或功能开关。禁止在服务器上手工修改构建产物。

检查清单

  • 环境命名、入口和所有者是否明确?
  • Secret 是否会进入日志、源码、镜像层或浏览器?
  • 配置错误能否在部署验证阶段被快速发现?
  • 配置与制品是否都有版本和审计记录?

制品是流水线生成并交付的不可变输出,例如静态资源压缩包、npm 包、二进制文件或 OCI 镜像。

推荐流程

  1. CI 根据 Commit 构建一次制品,并记录版本、Commit SHA 和构建信息。
  2. 完成测试、SBOM 生成、漏洞扫描和签名。
  3. 将制品上传到有保留策略的仓库。
  4. 测试、预发布和生产引用同一摘要或版本。
  5. 部署记录保存“环境—制品版本—配置版本”的对应关系。

版本策略

  • 人类发布版本使用 SemVer 或业务版本号。
  • 自动构建保留 Commit SHA,便于追溯。
  • 容器生产部署优先使用 digest;可读标签只作为辅助。
  • 禁止覆盖已经发布的生产版本。

回滚

回滚应重新部署上一个已验证制品,而不是重新构建旧代码。数据库变更应采用向前兼容、分阶段迁移或单独恢复策略。

三条实践链路

前端

提交 → Lint/测试 → 构建静态资源 → 发布 CDN/托管平台 → RUM → 回滚

后端

提交 → 测试 → 构建镜像 → 生成 SBOM/扫描 → 推送 Harbor → 部署 → APM/日志 → 回滚

Kubernetes

配置与 Secret → Helm/Kustomize → Workload/Service → Gateway/TLS → 探针与扩缩容 → 告警与排障

References

Powered by VitePress