OpenDuelyst项目部署指南:从构建到发布的完整流程
前言
OpenDuelyst是一款基于策略的卡牌游戏,本文将为开发者详细介绍如何从零开始部署新版本的OpenDuelyst游戏系统。我们将从版本发布准备开始,逐步讲解容器构建、后端服务部署、Web客户端发布以及桌面客户端打包等关键步骤。
部署前准备
在开始部署前,请确保满足以下环境要求:
-
硬件要求:
- Mac电脑(用于构建Mac客户端)
-
软件要求:
- Docker Desktop(用于构建容器镜像)
- AWS CLI工具(用于与AWS服务交互)
- Node.js环境(用于构建Web和桌面客户端)
-
权限要求:
- 代码仓库的维护者权限(用于创建发布)
- AWS ECR权限(发布容器镜像)
- AWS ECS/EC2权限(部署后端服务)
- AWS S3权限(上传Web客户端)
- AWS CloudFront权限(创建缓存失效)
第一步:版本标记与发布
版本更新流程
- 创建新分支:基于主分支创建新分支用于版本更新
- 更新版本文件:修改以下三个文件中的版本号:
version.json
(主版本文件)package.json
(Node.js项目配置)desktop/package.json
(桌面客户端配置)
- 合并变更:将版本更新分支合并到主分支
- 创建Git标签:
git tag <version> git push --tags origin
- 创建Github发布:基于新创建的标签发布正式版本
自动化建议
未来可以通过CI/CD系统实现:
- 监控
version.json
变更自动创建标签 - 验证三个版本文件的一致性
- 自动生成发布说明
第二步:Docker容器构建与发布
容器发布流程
-
配置AWS CLI:
aws sts get-caller-identity
验证AWS凭证配置正确
-
执行发布脚本:
scripts/release_containers.sh <version> <ecr-registry-id>
示例:
scripts/release_containers.sh 1.2.3 abcd1234
-
脚本执行内容:
- 构建基础Node.js镜像
- 构建各服务专用镜像
- 推送镜像到AWS ECR
技术细节
- 每个服务对应独立的ECR仓库
- 仓库命名与Terraform配置保持一致
- 镜像标签使用版本号标识
第三步:后端服务部署
手动部署步骤
-
更新Terraform配置: 修改
terraform/staging/ecs.tf
中的deployed_version
属性 -
应用变更:
terraform apply
-
ECS管理:
- 在AWS控制台停止旧任务
- 监控新任务健康状态
- 在负载均衡器中手动注册目标
优化建议
- 增加ECS集群容量实现零停机部署
- 配置健康检查自动停止旧任务
- 设置自动目标注册
第四步:Web客户端构建与发布
构建流程
-
构建Web客户端:
FIREBASE_URL=foo API_URL=bar scripts/build_staging_app.sh
注意:
FIREBASE_URL
必须以.firebaseio.com/
结尾API_URL
不应包含结尾斜杠
-
本地测试:
cd desktop yarn build:mac && yarn start:mac
-
上传到S3:
export NODE_ENV=staging export AWS_ACCESS_KEY=foo export AWS_SECRET_KEY=bar export AWS_REGION=my-region export S3_ASSETS_BUCKET=my-bucket yarn cdn:upload:web
-
缓存刷新: 在CloudFront控制台创建
/staging/duelyst.js
的缓存失效
第五步:桌面客户端构建
构建流程
-
构建所有平台客户端:
cd desktop yarn build:all && yarn zip:all
-
获取构建产物: 构建完成后,在
desktop/dist/build
目录下会生成三个平台的ZIP文件 -
附加到发布: 将这些ZIP文件手动附加到Github发布页面
总结
本文详细介绍了OpenDuelyst项目的完整部署流程,从版本控制到最终发布。虽然目前部分步骤仍需手动操作,但每个环节都提供了自动化建议,为未来的持续集成/持续部署(CI/CD)奠定了基础。
对于开发者而言,理解这一流程不仅有助于日常部署工作,也能为系统优化和自动化提供思路。随着项目发展,建议逐步实现各环节的自动化,提高发布效率和可靠性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考