【CircleCI】Pull Requestを出した時のみビルドを動かす

先日チームでのリリースフローが変わり、それに合わせてCircleCIの設定を変えようとしていた。やりたいことは、Pull Requestを作成・更新した場合と、masterブランチにタグを打ったときのみビルドを走らせることだったのだが、公式ドキュメントを見てworkflowのfilterに指定できる要素を見てもPull Requestがなかった。
GitHub Actionsにしないとだめだろうかとも思ったが、別の場所にオプションがあった。

circleci.com

Only Build Pull Request オプションを有効にすると、Pull RequestがOpenされた時のみビルドするようになる。このオプションは config.yml ではなく、コンソール内のAdvanced Settingからしか切り替えることができないようだ。
デフォルトではCircleCIは全ブランチの全プッシュをトリガーとしてビルドを走らせるが、このオプションを有効にすることで、ビルド回数を抑えることができ、料金の節約にもつながる。

f:id:Udomomo:20200308231651p:plain

実際に個人用レポジトリで設定をオンにしてみたところ、PRをOpenしたタイミングでビルドされるようになった。その後はPRに追加でコミットをプッシュしてもビルドが行われる。

なお、設定画面にも書いてある通り、defaultとなっているブランチにおいては全てのプッシュをトリガーとしてビルドが走る。defaultがmasterブランチであれば、これで本番環境へのデプロイも問題ないだろう。ただし、Git flowを使用するなどしてdefaultをdevelopブランチにしている場合、masterブランチにマージしてもビルドが走らなくなる。この場合はCircleCIのデフォルト通り、全ブランチの全プッシュでビルドを走らせるしかない。