Closed13

[Outdated] Next.js v15をCloudflare Pagesにデプロイする

mafuyumafuyu

v15を使うためにcreate-next-appでプロジェクト作成

create-cloudflareだとv14.2.5 (2024-11-12現在)

npx create-next-app@latest --use-bun
✔ Would you like to use TypeScript? … Yes
✔ Would you like to use ESLint? … No
✔ Would you like to use Tailwind CSS? … Yes
✔ Would you like your code inside a `src/` directory? … No
✔ Would you like to use App Router? (recommended) … Yes
✔ Would you like to use Turbopack for next dev? … Yes
✔ Would you like to customize the import alias (@/* by default)? … No

(...)

Success! Created my-app.
mafuyumafuyu

CLIからデプロイできるけどその後Git連携ができなくなる、逆はOK
Github ActionsでのデプロイにするとPRにデプロイURLをコメントしてくれない...
なのでGit連携してから自動デプロイをオフにして、その後ワークフローを動かす😇

mafuyumafuyu

デプロイ成功するがアクセスすると怒られてる
あと、デプロイ成功から正常に反映されるまでに2,3分ラグある?初回だけならいいけど

mafuyumafuyu

互換性フラグにnodejs_compatを追加して、デプロイを再試行

mafuyumafuyu

見れた

page.tsxに以下のコードなくても動くんだ...ダメなのかと思ってた

export const runtime = "edge";
mafuyumafuyu

自動デプロイをオフにする

  • 本番環境のブランチへの自動デプロイ ... 無効
  • プレビューブランチ ... なし
mafuyumafuyu
  • CLIからデプロイするための依存関係をインストール
bun add -D @cloudflare/next-on-pages wrangler
  • デプロイの設定ファイル?
    日付はどうするのがアンパイなのか分からん...とりあえずcreate-cloudflareで自動生成されたwrangler.tomlの日付パクった
wrangler.toml
+ #:schema node_modules/wrangler/config-schema.json
+ name = "my-app"
+ compatibility_date = "2024-11-06"
+ compatibility_flags = ["nodejs_compat"]
+ pages_build_output_dir = ".vercel/output/static"
  • 追加しなくてもCLIからのデプロイ成功したけど、まぁ、、追加しとく
app/page.tsx
+ export const runtime = "edge";
mafuyumafuyu

リポジトリシークレットの登録

gh secret set <key> -b <value>

以下のように登録できてればOK

$ gh secret list

NAME                     UPDATED
CLOUDFLARE_ACCOUNT_ID    less than a minute ago
CLOUDFLARE_API_TOKEN     less than a minute ago
CLOUDFLARE_PROJECT_NAME  less than a minute ago
mafuyumafuyu
.github/workflows/deploy.yml
name: Deploy to Cloudflare Pages

on:
  workflow_dispatch:
  push:

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v4
      - name: Setup Bun Environment
        uses: oven-sh/setup-bun@v2.0.1
      - name: Install Project Dependencies
        run: bun i
      - name: Build Project with Bun
        run: bunx @cloudflare/next-on-pages
      - name: Deploy to Cloudflare Pages with Wrangler
        uses: cloudflare/wrangler-action@v3
        with:
          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
          command: pages deploy .vercel/output/static --project-name=${{ secrets.CLOUDFLARE_PROJECT_NAME }}
mafuyumafuyu

PR出せばデプロイURLをコメントしてくれる
多分これがGit連携じゃないとできない
プルリクがオープンになった時にも動かしたい
プレビューのURLがブランチ名ではなくHEADになってしまった気がするので明日また見てみる

mafuyumafuyu

自前でコメントしてくれるworkflow作ったからGit連携やめる

このスクラップは9日前にクローズされました