Closed13
[Outdated] Next.js v15をCloudflare Pagesにデプロイする
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.
bun add -D @cloudflare/next-on-pages
CLI
からデプロイできるけどその後Git
連携ができなくなる、逆はOK
Github Actions
でのデプロイにするとPRにデプロイURLをコメントしてくれない...
なのでGit
連携してから自動デプロイをオフにして、その後ワークフローを動かす😇
デプロイ成功するがアクセスすると怒られてる
あと、デプロイ成功から正常に反映されるまでに2,3分ラグある?初回だけならいいけど
互換性フラグにnodejs_compat
を追加して、デプロイを再試行
見れた
page.tsx
に以下のコードなくても動くんだ...ダメなのかと思ってた
export const runtime = "edge";
自動デプロイをオフにする
- 本番環境のブランチへの自動デプロイ ... 無効
- プレビューブランチ ... なし
- 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";
リポジトリシークレットの登録
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
.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 }}
動作🙆🏻♀️
PR出せばデプロイURLをコメントしてくれる
多分これがGit連携じゃないとできない
プルリクがオープンになった時にも動かしたい
プレビューのURLがブランチ名ではなくHEADになってしまった気がするので明日また見てみる
自前でコメントしてくれるworkflow
作ったからGit連携やめる
このスクラップは9日前にクローズされました