Vercelで指定のブランチのみデプロイを実行する
VercelはGitHubリポジトリへのpushを自動検知してデプロイを行ってくれるので便利だが、特定のブランチの場合のみデプロイを実行したかったので対応方法を調べた。
下記記事を参考にさせていただき、Ignored Build Stepにデプロイ対象ブランチのチェックを行うスクリプトを追加した。
#!/bin/bash
echo "VERCEL_GIT_COMMIT_REF: $VERCEL_GIT_COMMIT_REF"
if [[ "$VERCEL_GIT_COMMIT_REF" == "staging" || "$VERCEL_GIT_COMMIT_REF" == "production" ]] ; then
# Proceed with the build
echo "✅ - Build can proceed"
exit 1;
else
# Don't build
echo "🛑 - Build cancelled"
exit 0;
fi
なお、今回ステージング(プレビュー)環境は staging
ブランチ、本番環境は production
ブランチで管理している。
参考記事ではプレビューデプロイを無視すると記載されていたが、プロダクションデプロイでも上記のスクリプトが実行されたのでデプロイ対象に production
ブランチも設定している。
プロダクションデプロイの対象ブランチはVercelのGit settingにある「Production Branch」から変更できる。
![vercel production](http://images.contentful.com/83xbj7nb79zu/21xoJVxC19mHQ3Zz9gut8m/79ca85a783e02c0602e6745795441be5/vercel_production.png)
これでデプロイ対象外のブランチ(main)にpushした場合はデプロイが無視されるようになった。
![vercel build skip](http://images.contentful.com/83xbj7nb79zu/1hsA1liInYaUrab9B2d585/aed65cbb72dfae4c5d43164b15842fea/vercel_build_skip.png)