🙅‍♀️

Vercelのプレビューデプロイで特定のブランチ以外を無視する

2021/03/27に公開

VercelプロジェクトにGitHubリポジトリを連携すると、なんらかのブランチにプッシュするたびにプレビューデプロイを作ってくれる。とても便利な機能ではあるのだが頻繁にプッシュをしていると制限に引っかからないか不安になったりもする。

で、2021年3月時点ではこのプレビューデプロイの対象ブランチを特定のブランチのみに絞ることがややこしい。要望は多そうなので今後対応されるかも。最新の情報は下記のIssueをチェックするのが良いと思う。

https://github.com/vercel/vercel/issues/3166

特定のブランチ以外のプレビューデプロイを無視するには

「Ignored Build Step」というものを使うことになる。Zennの開発メンバーがやってくれた。このスクラップの通りにやればいける。

https://zenn.dev/bisque/scraps/50a51a28d6eb85

1. プロジェクトにシェルスクリプトを配置

例としてdevelopブランチにプッシュされたとき(PRがマージされたとき)のみ、プレビューデプロイを行いたいとする。まず、vercel-ignore-build-step.shなどのファイルを作成して、内容を以下のようにする。

vercel-ignore-build-step.sh
#!/bin/bash

echo "VERCEL_GIT_COMMIT_REF: $VERCEL_GIT_COMMIT_REF"

if [[ "$VERCEL_GIT_COMMIT_REF" == "develop" ]] ; then
  # Proceed with the build
  echo "✅ - Build can proceed"
  exit 1;

else
  # Don't build
  echo "🛑 - Build cancelled"
  exit 0;
fi

2. VercelのダッシュボードでIgnored Build Stepを設定

Vercelのダッシュボードでプロジェクトを開き[Git]というメニューを開く。[Ignored Build Step]というセクションの中にCOMMANDを指定できるので、作成したファイルを実行するように指定する。プロジェクトのルートにvercel-ignore-build-step.shを配置したのであればこんな感じ。

COMMAND
bash vercel-ignore-build-step.sh


こんな感じで指定する

これで設定は完了。対象のブランチにプッシュされたとき以外はこんな感じでキャンセルされたことが表示される。

この表示を消すのは今のところ難しそう…。

おまけ) Vercel Botからのプルリクへのコメントをオフにするには

デフォルトではVercel BotからPRにコメントがつくようになっている。これをオフにしたいときは、プロジェクトルートのvercel.jsonを開き(なければ作成)、github.silentの値をtrueにすればOK。

vercel.json
{
  "github": {
    "silent": true
  }
}

Discussion