外观
练习 — CI/CD 与生产发布
对应知识点:
CI/CD·GitHub Actions· 生产发布 对应文档:docs/phase-08-deployment/cicd-production.md代码目录:workspace/phase-08/cicd/
前置条件:代码托管在 GitHub(或等效平台),完成 Docker 练习。
Level 1 — 基础
练习 1.1 · CI 流水线骨架
在 .github/workflows/ci.yml(或 workspace/phase-08/cicd/ci.yml 模板):
要求:
- 触发:
push、pull_request到 main - 步骤:checkout → setup-go → go test ./... → go vet ./...
- 文档如何复制到项目根目录
练习 1.2 · Race 检测
要求:
- CI 增加
go test -race ./... - 说明 race 失败时如何本地复现
练习 1.3 · 构建验证
要求:
- CI 增加
go build -o /dev/null ./cmd/server - 缓存 Go module(actions/cache)
Level 2 — 应用
练习 2.1 · Docker 镜像构建
要求:
- CI job 构建 Docker 镜像
- tag:
ghcr.io/<user>/twin-api:${{ github.sha }} - 推送到 GHCR(需 secrets 配置文档)
练习 2.2 · 多阶段与缓存
要求:
- Dockerfile 利用 build cache
- CI 使用 docker/build-push-action
- 文档镜像大小优化检查(
docker images)
练习 2.3 · 环境 secrets
要求:
- GitHub Secrets:
DATABASE_URL、JWT_SECRET(生产) - CI 集成测试使用 service container postgres(可选)
- 说明 secrets 不得出现在日志
Level 3 — 综合
练习 3.1 · CD 部署 staging
要求:
- main 分支合并后 SSH 部署到 staging 服务器
- 或 pull 新镜像 + docker compose up -d
- 部署后 curl health check
- 失败时 Slack/邮件通知(可选 webhook 占位)
练习 3.2 · 数据库迁移
要求:
- 部署流程包含 migration 步骤( golang-migrate 或 SQL 脚本)
- 文档 rollback 策略
- 数字孪生 schema 变更示例
Level 4 — 项目实践
练习 4.1 · Project 03 完整 CI/CD
在 workspace/phase-08/cicd/ 完成:
要求:
ci.yml:test + vet + race + build + docker pushdeploy.yml:tag 或 main 触发部署(manual approval 可选)production-checklist.md:发布前检查(备份、迁移、回滚、监控)- README:secrets 配置、首次部署、回滚命令
- 场景:数字孪生 AGV 服务从 commit 到生产的完整路径
学习检查
- [ ] CI 与 CD 的区别?
- [ ] 为何生产部署需要 manual approval?
- [ ] 蓝绿/滚动/金丝雀发布概念?
- [ ] 如何做到可回滚部署?
提交方式
检查答案 — cicd production 练习 X.X