跳到内容

第 0 卷 / 第 8 章 / 第 4 课

8.4 发布与部署速查 ​

类型:参考页,不要求顺序阅读

前置知识:全链路和 CI/CD

完成标志:能快速定位制品、版本、部署和回滚证据

全链路速查 ​

阶段典型动作必留证据
集成checkout、compile、test、verifycommit SHA、测试结果
打包Maven package / verifyJAR、哈希、构建日志
制镜像docker buildimage ID、基础镜像、SBOM
发布push artifact/imageregistry digest、来源证明
部署更新目标声明环境、时间、操作者、旧/新 digest
放流health、smoke、逐步流量指标、日志、错误预算
回滚恢复已知良好版本触发条件、目标 digest、验证结果

本地检查 ​

bash
mvn --batch-mode verify
sha256sum target/*.jar
docker image inspect name:tag
docker container inspect name
docker logs --tail 100 name

这些是针对已有项目和容器的命令片段,name:tag、name 必须替换。通配符命中多个 JAR 时要明确选择主制品。macOS 哈希命令可用 shasum -a 256。

Registry 模板 ​

bash
printf '%s' "$REGISTRY_TOKEN" | docker login REGISTRY \
  --username "$REGISTRY_USER" --password-stdin
docker tag local:candidate registry.example.com/owner/image:sha-COMMIT
docker push registry.example.com/owner/image:sha-COMMIT
docker logout REGISTRY

这里的 REGISTRY、用户变量、提交标识和 registry.example.com/owner/image 都是占位内容,登录主机须与推送目标一致,镜像仓库路径使用小写。仅在受控终端或 CI 中使用注入变量。不要把真实 token 写进仓库、命令示例或 shell 历史。部署记录使用 push 返回的 digest,而不是只记录可移动标签。

发布前检查 ​

  • [ ] 测试、静态检查和漏洞策略通过;
  • [ ] 候选制品只构建一次,哈希与 digest 已记录;
  • [ ] 配置和秘密属于正确环境;
  • [ ] 数据库迁移兼容回滚;
  • [ ] 健康、smoke、指标和日志查询已准备;
  • [ ] 已知良好版本与回滚权限可用;
  • [ ] 并发部署和人工门禁策略明确。

常见错误 ​

错误先查
Address already in use主机监听与容器端口发布
no main manifest attributeJAR manifest、主类、repackage 配置
registry denied仓库名、登录身份、token scope、包访问关系
部署后仍旧版实际 digest、容器 image ID、代理与浏览器缓存
回滚后仍失败数据库/配置兼容性、外部依赖、缓存和流量路由

Built with VitePress | Software Systems Atlas