Aliyun 静的サイトデプロイ
基本ルール
- EMAS Serverless 静的ホスティングを、カスタムドメインがない初心者向けプレビューのデフォルトルートとして扱います。ユーザーにAliyunのデフォルトURLを提供し、一般的なOSSデフォルトドメインでのダウンロード問題を回避します。
- OSS + GitHub Actions は、ユーザーが明示的にGitHubからAliyunへの自動化を希望し、すでにOSSバケットを作成または作成可能で、最終的なURLがHTMLとしてインライン表示されることを確認する必要があると理解している場合にのみ、反復可能な自動化ルートとして扱います。
- Aliyunへのログイン、実名認証、有料サービスの有効化、AccessKeyの作成、GitHubの2FA、請求確認は自動化できないふりをしてはいけません。一時停止し、ユーザーにこれらの手順を完了するよう依頼してください。
- ユーザーに
ALIYUN_ACCESS_KEY_SECRET、GitHubトークン、パスワード、支払いのスクリーンショットをチャットに貼り付けないでください。シークレットは直接GitHub SecretsまたはAliyun/GitHub UIに入力するよう依頼してください。
最初の判断
デプロイコードを書く前に、ルートを決定し明示的に述べてください:
| ルート | 使用する状況 | 自動化レベル | リスク |
|---|---|---|---|
| EMAS 静的ホスティング | カスタムドメインなし、初心者プレビュー、ユーザーがAliyunコンソールを操作可能 | エージェントはファイルを準備しコンソール手順をガイド; 必要な場合ユーザーがログイン/支払い/アップロードを担当 | コンソールUIが変更される可能性があり、手動アップロードが必要になる場合がある |
| OSSワークフロー | ユーザーがCodex × GitHub × Aliyunの自動化を希望; OSSバケットとAccessKeyを準備可能 | エージェントはワークフローを生成、コードをプッシュ、CIをトリガー、URLを検証可能 | OSSのデフォルトドメインは、メタデータ/静的ホスティングが正しく設定されていない場合HTMLをダウンロードさせる可能性がある |
ユーザーが「没有域名先给客户看」とだけ言った場合は、まずEMASのガイダンスを使用してください。ユーザーが「自动上线」、「XgitX阿里云」、「GitHub 自动部署」、または「以后反复更新」と言った場合は、OSSワークフロースクリプトを使用しますが、事前にブラウザでのダウンロード検証リスクを説明してください。
ワークフロー
- プロジェクトを検査する:
python3 /Users/likai/.codex/skills/aliyun-static-site-deploy/scripts/check_readiness.py --project . - デプロイルートを一文で説明する:
- OSS: "GitHub Actions を使って阿里云 OSS にアップロードし、ブラウザがファイルをダウンロードしないことを確認します。"
- EMAS: "まず阿里云 EMAS 静态托管を使ってドメインなしのプレビューURLを取得します。"
- ユーザーがAliyunアクセスを準備していない場合、
references/secrets-hand-off.mdを読み、Aliyunログイン/支払い/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パスを確認した後にプロジェクト固有のスクリプトを作成してください。
人間の境界
以下のいずれかが不足している場合は、一時停止してユーザーを呼び出してください:
- Aliyunアカウントにログインしていない、実名認証が完了していない、または支払いを求められている。
- EMASサービススペース、OSSバケット、または静的ホスティングが作成されていない。
- AccessKeyが作成されていない。
- GitHub Secretsが入力されていない。
- GitHubがユーザー名/トークンまたは二段階認証を求めている。
ユーザーに正確な入力フィールドを表示しますが、チャットでシークレットを受け取らないでください。
デプロイ成功条件
すべてのチェックが合格するまで、デプロイは不完全として扱います:
- GitHubリポジトリにコミットされたWebサイトのソースとデプロイ手順がある。
- OSS自動化の場合、GitHubリポジトリに生成されたワークフロー(
.github/workflows/deploy-aliyun-static-site.yml)があり、mainまたはworkflow_dispatchでActionsの実行が成功している。 - EMAS手動/静的ホスティングアップロードの場合、Aliyunコンソールにアップロードされたホームページファイルと公開デフォルトURLが表示されている。
- 公開URLがHTTP 200または3xxの後に200を返す。
- レスポンスがHTMLであり、XMLエラーテキストや強制ダウンロードメタデータではない。
- ページに
<htmlと空でないタイトルまたは表示可能な本文テキストが含まれている。 - ホームページが参照する主要なアセットが公開URLまたはリモートURLである。
参考資料
- ユーザーがAliyun/GitHub Secretsの段階的なヘルプを必要とする場合は、
references/secrets-hand-off.mdをお読みください。 - デプロイまたはURL検証が失敗した場合は、
references/troubleshooting.mdをお読みください。