阿里云静态网站部署
核心规则
- 将 EMAS Serverless 静态托管 视为默认的新手无域名预览路线。它能为用户提供一个阿里云默认 URL,并避免常见的 OSS 默认域名下载问题。
- 将 OSS + GitHub Actions 视为可重复的自动化路线,仅当用户明确希望实现 GitHub 到阿里云的自动化、已经或可以创建 OSS Bucket,并且理解最终 URL 必须验证是否直接以内嵌 HTML 方式打开时使用。
- 不要假装阿里云登录、实名认证、付费服务激活、AccessKey 创建、GitHub 两步验证或账单确认可以自动完成。请暂停并让用户自行完成这些步骤。
- 切勿要求用户在聊天中粘贴
ALIYUN_ACCESS_KEY_SECRET、GitHub 令牌、密码或付款截图。请让用户直接在 GitHub Secrets 或阿里云/GitHub 界面上输入密钥。
第一步决策
在编写部署代码之前,先确定路线并明确说明:
| 路线 | 使用场景 | 自动化程度 | 风险 |
|---|---|---|---|
| EMAS 静态托管 | 无自定义域名、新手预览、用户可操作阿里云控制台 | Agent 准备文件并指导控制台步骤;用户处理登录/付费/上传(如需) | 控制台 UI 可能变更,可能需要手动上传 |
| OSS 工作流 | 用户希望实现 Codex × GitHub × 阿里云自动化;OSS Bucket 和 AccessKey 已就绪 | Agent 可生成工作流、推送代码、触发 CI 并验证 URL | 如果元数据/静态托管设置不正确,OSS 默认域名可能会下载文件 |
如果用户仅说“没有域名先给客户看”,请优先使用 EMAS 指导。如果用户说“自动上线”、“XgitX阿里云”、“GitHub 自动部署”或“以后反复更新”,请使用 OSS 工作流脚本,但在继续之前说明浏览器下载验证风险。
工作流程
- 检查项目:
python3 /Users/likai/.codex/skills/aliyun-static-site-deploy/scripts/check_readiness.py --project . - 用一句话解释部署路线:
- OSS:“使用 GitHub Actions 上传到阿里云 OSS,并验证浏览器不以文件下载方式打开。”
- EMAS:“先用阿里云 EMAS 静态托管获取无域名预览地址。”
- 如果用户尚未准备好阿里云访问权限,请阅读
references/secrets-hand-off.md,并让用户完成阿里云登录/付费/AccessKey/GitHub Secrets 配置。解释点击位置时可使用附带截图。 - 仅限 OSS 自动化,生成 GitHub Actions 工作流:
python3 /Users/likai/.codex/skills/aliyun-static-site-deploy/scripts/prepare_oss_workflow.py --project . --force - 再次验证生成的工作流和本地项目:
python3 /Users/likai/.codex/skills/aliyun-static-site-deploy/scripts/check_readiness.py --project . --strict - 如果用户要求且凭据可用,则将项目提交/推送至 GitHub。如果 Git LFS 安装不正确,请使用脚本输出来解释修复方法,而不是盲目重试。
- 部署完成后,验证公共 URL:
python3 /Users/likai/.codex/skills/aliyun-static-site-deploy/scripts/verify_deployed_url.py "$ALIYUN_SITE_URL"
必需的 GitHub Secrets
对于附带的 OSS 工作流,请让用户在 GitHub 中创建以下仓库机密:
ALIYUN_ACCESS_KEY_IDALIYUN_ACCESS_KEY_SECRETALIYUN_OSS_BUCKETALIYUN_OSS_ENDPOINT
可选:
ALIYUN_SITE_URL用于部署时验证。示例:https://your-bucket.oss-cn-hangzhou.aliyuncs.com/index.html
对于 EMAS,请使用该项目中 EMAS 部署脚本所需的确切机密名称。如果不存在 EMAS 脚本,不要编造虚假的机密名称;请引导用户手动进行 EMAS 静态托管上传,或在确认官方 API/SDK 路径后创建特定项目的脚本。
人机边界
当以下任何一项缺失时,停止并呼叫用户:
- 阿里云账户未登录、未通过实名认证或要求付费。
- EMAS 服务空间、OSS Bucket 或静态托管尚未创建。
- AccessKey 尚未创建。
- GitHub Secrets 尚未填写。
- GitHub 要求输入用户名/令牌或二次确认。
向用户展示确切的填写字段,但不要在聊天中接收密钥。
部署成功标准
在所有检查通过之前,部署视为未完成:
- GitHub 仓库包含已提交的网站源码和部署说明。
- 对于 OSS 自动化,GitHub 仓库包含生成的工作流
.github/workflows/deploy-aliyun-static-site.yml,并且 Actions 运行在main或workflow_dispatch上成功。 - 对于 EMAS 手动/静态托管上传,阿里云控制台显示已上传的主页文件及公共默认 URL。
- 公共 URL 返回 HTTP 200 或 3xx 后跟 200。
- 响应为 HTML,而不是 XML 错误文本或强制下载元数据。
- 页面包含
<html以及非空的标题或可见的正文文本。 - 主页引用的关键资源为公共或远程 URL。
参考资料
- 当用户需要阿里云/GitHub Secrets 的分步帮助时,请阅读
references/secrets-hand-off.md。 - 当部署或 URL 验证失败时,请阅读
references/troubleshooting.md。