Files
controller-v2/DEPLOYMENT.md
T
fucheng 650e8ef017
Deploy B9 / deploy (push) Successful in 3m2s
ci: add B9 branch deployment to S3 and CloudFront
2026-11-02 11:17:14 +08:00

48 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# B9 自动部署
Gitea workflow 位于 `.gitea/workflows/deploy-b9.yml`。
## 触发方式
- 推送 `b9` 分支:构建正式版,同步到 `s3://luxsin-app-bucket/b9/v2/`,刷新 CloudFront `EUS4XQ8Y0W2ZV` 的 `/b9/v2/*`。
- Actions 手动运行:可选择 `prod` 或 `test`;测试环境同步到 `s3://luxsin-app-bucket/b9/test/`,刷新 `/b9/test/*`。
- 使用现有 `windows-cross` Runner(Linux x64 Docker 镜像),安装 Node.js 24、pnpm 11.5.2 和 AWS CLI。
- 同一时间只运行一个 B9 部署,避免多个同步任务互相覆盖。
## 一次性配置
在实际托管 `b9` 分支的 Gitea 仓库中,进入「设置 → Actions」:
### Secrets
| 名称 | 用途 |
| --- | --- |
| `AWS_ACCESS_KEY_ID` | 部署账号的访问密钥 ID |
| `AWS_SECRET_ACCESS_KEY` | 对应的访问密钥 |
| `AWS_SESSION_TOKEN` | 仅临时凭据需要;过期后需要更新整组凭据 |
不要提交本机 `.aws` 或把密钥写入 workflow。部署身份应仅有目标桶 `b9/v2/`、`b9/test/` 前缀所需的同步读写删除权限,以及指定 CloudFront 分配的创建失效权限;若存储桶使用自定义 KMS 加密,还需相应 KMS 权限。
### Variables
| 名称 | 用途 |
| --- | --- |
| `AWS_REGION` | 填写现有 S3 存储桶所在区域,必填 |
| `VITE_AI_API_URL` | 生产可访问的 AI 服务地址,可选;未填时使用应用内置默认地址 |
Runner 必须能领取此仓库的任务,并能够访问 GitHub Actions、npm、AWS CLI 下载站、S3 和 CloudFront API。当前本地 origin 为 `https://repo.luxsin.com.cn/audio/controller-v2.git`,需要在这台 Gitea 对应仓库配置 Runner 和上述参数;旧 Gitea 的仓库级 Runner 不会自动跨实例生效。
## 部署规则
复用 `scripts/deploy.sh`,CI 执行 `DEPLOY_PROJECT_NAME=b9 bash scripts/deploy.sh prod -yr`。`-y` 跳过人工确认,`-r` 刷新缓存;本地未加 `-y` 时仍需确认。
默认上传 images,与现有脚本默认行为一致。`aws s3 sync --delete` 会删除目标前缀中本次构建不存在的对象,部署前会校验入口文件避免上传空目录。需要排除 images 的手工部署仍可使用 `-i`。
每次部署会产生 S3 请求和 CloudFront 缓存失效请求,按账号实际用量计费。workflow 不上传或读取本机未跟踪的 `.env`,构建所需公开配置应放入 Actions Variables。
## 分支与型号目录
`main` 对应 `x8`,其余已知型号分支 `x9`、`b9`、`bd9`、`bh9` 使用分支名作为目录。CI 会设置 `DEPLOY_PROJECT_NAME`,构建路径与部署目标保持一致;本地脚本也支持相同映射。
目前自动触发范围仍仅为 `b9`,未扩大其他分支的自动生产部署。其他分支需包含对应 workflow,启用前需确认部署范围;不要覆盖各分支的型号专用代码。AWS 权限也应按实际启用的型号前缀配置。