ci: GitHub Actions から Vercel へデプロイする - #3
Merged
Merged
Conversation
Vercel へのデプロイを GitHub Actions に寄せる。 - react-router.config.ts に @vercel/react-router の vercelPreset を追加。 React Router v7 の SSR を Vercel で動かすために必要 - vercel.json で main の Git 連携デプロイを無効化。Actions と併用すると 同じコミットが二重にデプロイされるため - PR で preview、main への push で production をデプロイするワークフローを追加。 どちらも pnpm typecheck を通してからビルドする - Dockerfile / .dockerignore を削除。npm ci と package-lock.json を前提に していたがこのリポジトリは pnpm で、そのままでは動かなかった - CI で pnpm のバージョンを固定するため packageManager を追加
vercel link でリポジトリが Vercel の Git 連携に自動接続されたため、push のたびに Actions と Vercel の両方がデプロイする状態になっていた。main だけの無効化では PR のプレビューが二重になるので、全ブランチを対象にする。 Actions が使う vercel deploy --prebuilt はこの設定の影響を受けない。 併せて、vercel link が .gitignore に追記した .vercel / .env* が既存の記述と 重複していたので整理した。.env.local には VERCEL_OIDC_TOKEN が入るため .env* で拾う。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概要
#1 の投入面を作る前に、まず Vercel にデプロイできる状態にする。デプロイ経路は GitHub Actions に寄せた。
先に済ませる理由は、Neon などのストレージを Vercel Marketplace から入れる際に「リンク済みの Vercel プロジェクト」へ環境変数が注入される仕組みのため。プロジェクトが無いと DB 側の作業が止まる。
変更内容
Vercel で動く形にする
react-router.config.tsに@vercel/react-routerのvercelPreset()を追加した。React Router v7 の SSR を Vercel で動かすには必須で、これが無いとビルド成果物を Vercel が配信できない。二重デプロイの回避
vercel.jsonでmainの Git 連携デプロイを無効化した。Vercel の Git 連携と Actions を併用すると、同じコミットが 2 回デプロイされる。{ "git": { "deploymentEnabled": { "main": false } } }ワークフロー
vercel-preview.ymlmain向けの PRvercel build→ preview デプロイ → PR に URL をコメント(貼り替え式)vercel-production.ymlmainへの pushvercel build --prod→ production デプロイどちらも
pnpm typecheckを通してからビルドする。preview は同一 PR への連続 push で古い実行を打ち切る。Dockerfile の削除
Dockerfileと.dockerignoreを削除した。npm ciとpackage-lock.jsonを前提にしていたが、このリポジトリは pnpm でpnpm-lock.yamlしか無いため、そのままでは動かない状態だった。テンプレート既定のまま放置されていたもの。コンテナデプロイを残す方針なら、削除ではなく pnpm 対応に直す形に変更する。
その他
packageManager: pnpm@10.14.0を追加(CI で pnpm のバージョンを固定するため).gitignoreに/.vercel/と/.playwright-mcp/を追加マージ前に必要な設定
このリポジトリの Secrets に 3 つ登録が必要。未登録のままだとワークフローは失敗する。
VERCEL_TOKENVERCEL_ORG_IDvercel link後に生成される.vercel/project.jsonのorgIdVERCEL_PROJECT_IDprojectId手順は、ローカルで
vercel linkして Vercel プロジェクトを作成 → 生成された.vercel/project.jsonから 2 つの ID を控える → Vercel でトークンを発行 → 3 つを Secrets に登録。.vercel/は.gitignore済みなのでコミットされない。確認したこと
pnpm typecheck成功pnpm build成功。プリセットが効いてbuild/server/nodejs_<runtime>/形式で出力される実際の Vercel デプロイは未検証。Secrets 登録後、この PR の preview ジョブが初回の検証になる。
関連