Skip to content

练习 — 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 模板):

要求

  • 触发:pushpull_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_URLJWT_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 push
  • deploy.yml:tag 或 main 触发部署(manual approval 可选)
  • production-checklist.md:发布前检查(备份、迁移、回滚、监控)
  • README:secrets 配置、首次部署、回滚命令
  • 场景:数字孪生 AGV 服务从 commit 到生产的完整路径

学习检查

  • [ ] CI 与 CD 的区别?
  • [ ] 为何生产部署需要 manual approval?
  • [ ] 蓝绿/滚动/金丝雀发布概念?
  • [ ] 如何做到可回滚部署?

提交方式

检查答案 — cicd production 练习 X.X

学习导航

上一篇:Nginx、HTTPS 与 DNS · 对应知识文档