コンテンツにスキップ

Tasks

1. Azure OIDC 認証の設定

  • [x] 1.1 Azure Portal でアプリケーション登録を作成
  • [x] 1.2 フェデレーション資格情報を追加(GitHub リポジトリ、main ブランチ用と Pull Request 用)
  • [x] 1.3 本番環境のストレージアカウントに Storage Blob Data Contributor ロールを付与
  • [x] 1.4 開発環境のストレージアカウントに Storage Blob Data Contributor ロールを付与

2. GitHub Secrets の設定

  • [x] 2.1 AZURE_CLIENT_ID を GitHub Secrets に追加
  • [x] 2.2 AZURE_TENANT_ID を GitHub Secrets に追加
  • [x] 2.3 AZURE_SUBSCRIPTION_ID を GitHub Secrets に追加
  • [x] 2.4 AZURE_STORAGE_ACCOUNT_PROD を GitHub Secrets に追加
  • [x] 2.5 AZURE_STORAGE_ACCOUNT_DEV を GitHub Secrets に追加
  • [x] 2.6 VITE_BLOB_BASE_URL_PROD を GitHub Secrets に追加
  • [x] 2.7 VITE_BLOB_BASE_URL_DEV を GitHub Secrets に追加

3. ワークフローファイルの基本構造作成

  • [x] 3.1 .github/workflows/deploy.yml ファイルを作成
  • [x] 3.2 ワークフロー名とトリガー設定を追加(main ブランチ push と Pull Request)
  • [x] 3.3 permissions 設定を追加(id-token: write, contents: read)

4. CI ジョブの実装(Lint とテスト)

  • [x] 4.1 lint ジョブを作成(ubuntu-latest)
  • [x] 4.2 lint ジョブに checkout アクションを追加
  • [x] 4.3 lint ジョブに Node.js セットアップを追加(pnpm キャッシュ有効化)
  • [x] 4.4 lint ジョブに pnpm インストールを追加
  • [x] 4.5 lint ジョブに依存関係インストールを追加
  • [x] 4.6 lint ジョブに pnpm run lint を追加
  • [x] 4.7 test ジョブを作成(ubuntu-latest)
  • [x] 4.8 test ジョブに checkout アクションを追加
  • [x] 4.9 test ジョブに Node.js セットアップを追加(pnpm キャッシュ有効化)
  • [x] 4.10 test ジョブに pnpm インストールを追加
  • [x] 4.11 test ジョブに依存関係インストールを追加
  • [x] 4.12 test ジョブに pnpm test を追加

5. ビルドジョブの実装

  • [x] 5.1 build ジョブを作成(needs:[lint, test])
  • [x] 5.2 build ジョブに checkout アクションを追加
  • [x] 5.3 build ジョブに Node.js セットアップを追加(pnpm キャッシュ有効化)
  • [x] 5.4 build ジョブに pnpm インストールを追加
  • [x] 5.5 build ジョブに依存関係インストールを追加
  • [x] 5.6 build ジョブに環境変数設定を追加(本番環境用と開発環境用で分岐)
  • [x] 5.7 build ジョブに pnpm run build を追加
  • [x] 5.8 build ジョブにビルド成果物のアップロード(upload-artifact)を追加

6. 本番環境デプロイジョブの実装

  • [x] 6.1 deploy-prod ジョブを作成(needs: build, if: github.ref == 'refs/heads/main')
  • [x] 6.2 deploy-prod ジョブに checkout アクションを追加
  • [x] 6.3 deploy-prod ジョブにビルド成果物のダウンロード(download-artifact)を追加
  • [x] 6.4 deploy-prod ジョブに Azure ログインアクション(OIDC)を追加
  • [x] 6.5 deploy-prod ジョブに Azure CLI を使った Blob Storage へのアップロードを追加

7. 開発環境デプロイジョブの実装

  • [x] 7.1 deploy-dev ジョブを作成(needs: build, if: github.event_name == 'pull_request')
  • [x] 7.2 deploy-dev ジョブに checkout アクションを追加
  • [x] 7.3 deploy-dev ジョブにビルド成果物のダウンロード(download-artifact)を追加
  • [x] 7.4 deploy-dev ジョブに Azure ログインアクション(OIDC)を追加
  • [x] 7.5 deploy-dev ジョブに Azure CLI を使った Blob Storage へのアップロードを追加

8. E2E テストジョブの実装(開発環境のみ)

  • [x] 8.1 e2e-dev ジョブを作成(needs: deploy-dev, if: github.event_name == 'pull_request')
  • [x] 8.2 e2e-dev ジョブに checkout アクションを追加
  • [x] 8.3 e2e-dev ジョブに Node.js セットアップを追加(pnpm キャッシュ有効化)
  • [x] 8.4 e2e-dev ジョブに pnpm インストールを追加
  • [x] 8.5 e2e-dev ジョブに依存関係インストールを追加
  • [x] 8.6 e2e-dev ジョブに Playwright ブラウザのキャッシュ設定を追加
  • [x] 8.7 e2e-dev ジョブに pnpm exec playwright install を追加
  • [x] 8.8 e2e-dev ジョブに環境変数設定(VITE_BLOB_BASE_URL_DEV)を追加
  • [x] 8.9 e2e-dev ジョブに pnpm run test:e2e を追加

9. テストと検証

  • [x] 9.1 テスト用ブランチで PR を作成し、開発環境デプロイワークフローが実行されることを確認
  • [x] 9.2 Lint、テスト、ビルドが成功することを確認
  • [x] 9.3 開発環境へのデプロイが成功することを確認
  • [x] 9.4 E2E テストが実行され成功することを確認
  • [x] 9.5 PR を main にマージし、本番環境デプロイワークフローが実行されることを確認
  • [x] 9.6 本番環境へのデプロイが成功することを確認
  • [x] 9.7 本番環境で E2E テストが実行されないことを確認

10. ドキュメント作成

  • [x] 10.1 README に CI/CD パイプラインの説明を追加
  • [x] 10.2 Azure OIDC 設定手順をドキュメント化
  • [x] 10.3 GitHub Secrets の設定手順をドキュメント化
  • [x] 10.4 ロールバック手順をドキュメント化