DevOps
DevOps 关注的是让软件从代码变更到生产运行形成一条可重复、可观测、可恢复的交付链路。
生命周期
一条完整链路通常包含计划、编码、验证、构建、制品存储、发布、部署、运行、观测和反馈。工具不是目标,缩短反馈时间、降低变更风险并提高恢复能力才是目标。
基本原则
- 所有生产变更都可追溯到版本控制中的代码、配置或审批记录。
- 同一制品在环境之间晋级,不为测试和生产分别重新构建。
- 自动化任务应可重复执行,失败后能够安全重试。
- 发布前定义验证方式和回滚条件,发布后立即验证用户可感知结果。
- 不以“装了某个工具”代替流程、权限和责任边界。
环境模型
常见环境包括本地开发、集成测试、预发布和生产。环境数量不是越多越好,每套环境都应有明确用途、责任人、数据策略和退出条件。
配置原则
- 代码与环境配置分离;配置结构随代码版本管理,敏感值进入 Secret 系统。
- 使用明确的配置契约,在启动阶段校验必填项、类型和取值范围。
- 避免在镜像或前端静态文件中写入运行时 Secret。
- 前端可公开配置应在构建期或运行期明确注入,并视为用户可见数据。
- 记录配置变更,确保能够比较环境差异并回滚。
环境晋级
生产发布应使用已经通过测试的同一制品,通过环境级配置改变连接地址、容量或功能开关。禁止在服务器上手工修改构建产物。
检查清单
- 环境命名、入口和所有者是否明确?
- Secret 是否会进入日志、源码、镜像层或浏览器?
- 配置错误能否在部署验证阶段被快速发现?
- 配置与制品是否都有版本和审计记录?
制品是流水线生成并交付的不可变输出,例如静态资源压缩包、npm 包、二进制文件或 OCI 镜像。
推荐流程
- CI 根据 Commit 构建一次制品,并记录版本、Commit SHA 和构建信息。
- 完成测试、SBOM 生成、漏洞扫描和签名。
- 将制品上传到有保留策略的仓库。
- 测试、预发布和生产引用同一摘要或版本。
- 部署记录保存“环境—制品版本—配置版本”的对应关系。
版本策略
- 人类发布版本使用 SemVer 或业务版本号。
- 自动构建保留 Commit SHA,便于追溯。
- 容器生产部署优先使用 digest;可读标签只作为辅助。
- 禁止覆盖已经发布的生产版本。
回滚
回滚应重新部署上一个已验证制品,而不是重新构建旧代码。数据库变更应采用向前兼容、分阶段迁移或单独恢复策略。
三条实践链路
前端
提交 → Lint/测试 → 构建静态资源 → 发布 CDN/托管平台 → RUM → 回滚
后端
提交 → 测试 → 构建镜像 → 生成 SBOM/扫描 → 推送 Harbor → 部署 → APM/日志 → 回滚
Kubernetes
配置与 Secret → Helm/Kustomize → Workload/Service → Gateway/TLS → 探针与扩缩容 → 告警与排障