はじめに
VercelとGitHubのリポジトリを連携すると、push`したタイミングで自動的にデプロイが実行されます。
私の場合、GitHub ActionsでもVercelへのデプロイを行っていたため、push時の自動デプロイと GitHub Actionsによるデプロイで二重にデプロイされることがありました。
そこで今回は、
-
特定のブランチ(例:dev)では自動デプロイしない
-
CI/CD(GitHub Actions)側でデプロイを制御したい
といったケースを想定し、Vercelの自動デプロイを制御する方法をまとめます。
この記事は個人的なアウトプットを目的として作成したものです。そのため、誤った情報や不足している内容が含まれている可能性があります。もし間違いや気になる点がございましたら、ぜひご指摘いただけますと幸いです。
方法
ブランチごとに自動デプロイを制御する方法
公式ドキュメントに記載されている方法です。
vercel.tsまたはvercel.jsonにgit.deploymentEnabledを設定することで、ブランチ単位でデプロイの有無を制御できます。
以下の例では、devブランチへのpushではデプロイされないように設定しています。
import type { VercelConfig } from "@vercel/config/v1";
export const config: VercelConfig = {
git: {
deploymentEnabled: {
"dev": false,
},
},
};
{
"$schema": "https://openapi.vercel.sh/vercel.json",
"git": {
"deploymentEnabled": {
"dev": false
}
}
}
push時の自動デプロイをすべて無効化したい場合
すべてのブランチでpush時の自動デプロイを無効化したい場合は、deploymentEnabledをfalseに設定します。
import type { VercelConfig } from '@vercel/config/v1';
export const config: VercelConfig = {
git: {
deploymentEnabled: false,
},
};
{
"$schema": "https://openapi.vercel.sh/vercel.json",
"git": {
"deploymentEnabled": false
}
}
これにより、pushしても自動ではデプロイされず、GitHub Actions側でのみデプロイを行う構成にできます。
終わりに
これまでpush時に自動でデプロイされることに特に疑問を持っていませんでしたが、ブランチごとに挙動を変えたい場合や、CI/CDで一元管理したい場合には非常に有効な設定だと感じました。
参考