zudo-cloudflare-wisdom

Type to search...

to open search from anywhere

マルチ出力デプロイ

作成2026年4月4日Takeshi Takatsudo

複数のビルド出力を1つの Pages デプロイにまとめる

パターン概要

一部のプロジェクトでは、複数のビルド出力(例: ブログ + ドキュメントサイト)を1つの Cloudflare Pages デプロイにまとめる必要があります。

例: ブログ + ドキュメントサイト

zpaper プロジェクトでは、Astro ブログと zudo-doc ドキュメントサイトを1つの Pages プロジェクトにデプロイしています:

graph TB A[Build blog] --> D[Combine outputs] B[Build doc] --> D C[Functions] --> D D --> E[Deploy to CF Pages]

ビルドジョブ

両方の出力をビルドしてキャッシュします:

  build:
    steps:
      - run: pnpm build      # Blog -> blog/dist/
      - run: pnpm doc:build   # Docs -> doc/dist/

      - uses: actions/cache/save@v4
        with:
          path: blog/dist/
          key: blog-build-${{ github.run_id }}

      - uses: actions/cache/save@v4
        with:
          path: doc/dist/
          key: doc-build-${{ github.run_id }}

      - uses: actions/cache/save@v4
        with:
          path: functions/
          key: functions-build-${{ github.run_id }}

結合とデプロイ

  deploy:
    needs: [build, test]
    steps:
      - uses: actions/cache/restore@v4
        with:
          path: blog/dist/
          key: blog-build-${{ github.run_id }}

      - uses: actions/cache/restore@v4
        with:
          path: doc/dist/
          key: doc-build-${{ github.run_id }}

      - uses: actions/cache/restore@v4
        with:
          path: functions/
          key: functions-build-${{ github.run_id }}

      - name: Combine outputs
        run: |
          mkdir -p deploy/pj/my-site
          cp -r blog/dist/* deploy/pj/my-site/
          mkdir -p deploy/pj/my-site/doc
          cp -r doc/dist/* deploy/pj/my-site/doc/

      - name: Deploy
        run: |
          pnpm dlx wrangler@4 pages deploy deploy \
            --project-name=my-site \
            --branch=main \
            --commit-hash=${GITHUB_SHA}
        env:
          CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}

キャッシュ vs アーティファクト

ジョブ間のデータ受け渡しに actions/upload-artifact ではなく actions/cache を使用する場合:

キャッシュアーティファクト
保存実行をまたいで共有、自動的に削除される実行ごと、retention-days に基づく
蓄積蓄積の問題なしretention が長いとストレージが肥大化する可能性あり
速度繰り返し内容に対して高速高速

💡 Tip

ジョブ間のデータ受け渡しには github.run_id をスコープにしたキーで actions/cache を使用してください。多数の CI 実行にわたるアーティファクトストレージの蓄積を回避できます。

依存関係のある Functions

Pages Functions が npm パッケージをインポートする場合、デプロイ前にインストールしてください:

      - name: Install function dependencies
        run: |
          rm -rf node_modules
          pnpm add -w minisearch

      - name: Deploy
        run: pnpm dlx wrangler@4 pages deploy deploy --project-name=my-site