Vercelの課金を抑えた運用
Vercelのシート課金を抑えるため、メンバー追加を最小限に絞って運用しているチームは多いと思います。
この運用で厄介なのが、Vercelの権限を持たないメンバーがPRを出した際、デプロイ権限がないため強制的にエラー扱いになってしまうことです。
これの何が問題かというと、Lintやテストなど他の重要なCIの成否がVercelのエラーに埋もれてしまう点です。PRを開いて確認しなければ、他のCIで落ちているのかの判断ができません。
これって地味にストレスですよね?
今回は、設定ファイルを1つ追加してこの不要なビルド自体をスキップし、PRのステータスを健全に保つ方法を紹介します。
vercel.jsonでデプロイ対象を制御する
プロジェクトのルートディレクトリに vercel.json を配置し(すでにある場合は追記し)、以下のように記述します。
{
"$schema": "https://openapi.vercel.sh/vercel.json",
"git": {
"deploymentEnabled": {
"main": true,
"staging": true,
"develop": true,
"feature/**": false
}
}
}
ワイルドカードは *-ticket のように前方一致でも指定できます。
詳しい設定の仕方は minimatch構文 を参照してください。
モノレポ構成の場合の注意点
Turborepo や Yarn Workspaces などのモノレポ環境で運用している場合は、リポジトリのルートディレクトリではなく、各アプリケーションのディレクトリ(例: apps/web/vercel.json)に配置してください。
おまけ
regions はビルドスキップとは直接関係ありませんが、日本のプロジェクトならServerless Functions のリージョンを東京(hnd1)に固定しておくことを推奨します。
{
"$schema": "https://openapi.vercel.sh/vercel.json",
"regions": ["hnd1"],
}
まとめ
不要なエラー表示を放置していると、チーム全体のエラーに対する感度が下がってしまいます。
Vercelのコストを抑えつつ、PRのステータスを正しく機能させるために、ぜひこの設定を導入してみてください。
