iCARE公式ブログ

世界一のヘルスケアカンパニーを目ざす株式会社iCAREの公式ブログです。

Pull Request を自動でマージしてくれる Mergify.io を使ってみた

おはこんばんちは、いっせーです。

今回は最近試験導入したサービスの紹介をしようと思います。

2018/07 から SUPPORI 制度を使い、自動マージサービスの Mergify.io を Carely 開発に試験導入してみました。

SUPPORI 制度についてはこちら icare.hatenablog.com

Mergify.io はこちら mergify.io

Mergify.io について

Twitter を見ていたら

というツイートが流れてきて、ぜひ導入したいと思いました。 その理由についてはのちほど。

こちらのサービスは設定ファイルにマージする条件を書いておくと、 それに従って自動的にマージしてくれるサービスです。

OSS リポジトリなら無料で使えるので、試してみてはいかがでしょうか。

設定している自動マージ条件

  • CircleCI の CI が Success であること
  • 一名以上の Approve がついていること

の2つを満たしている場合、

mergify が update branch をした上で、マージしてくれます。

自動マージしてほしくない場合

PR に 「0_no-mergify」をつけると上記の条件を満たしていても自動マージされません。

f:id:icareofficial:20180726102250p:plain

上記の設定のymlは以下のようになっています

設定ファイル

rules:
  default:
    protection:
      required_status_checks:
        strict: true
        contexts:
        - 'ci/circleci: build-job'
      required_pull_request_reviews:
        required_approving_review_count: 1
    disabling_label: 0_no-mergify
  branches:
    master:
      protection:
        required_status_checks:
          strict: false

Mergify.io を使う理由

Carely では PR をだした feature ブランチに最新の develop をマージした上で、develop にマージするルールになっています。
これは「最新の develop をマージした状態で CI が通ることを確認したい」という意図からそうなっています。

PR を出す際に update branch をしても、レビューが終わるまでの間に他の PR がマージされるなどした場合、
再度 update branch をする必要があります。

update branch したあと再度 CI が走るので、それなりに時間がかかります。
それゆえその間マージする係の人は別の作業をすることが多いです。

やはり人なので作業に集中して、マージするのを忘れてしまうことがしばしばあります。
その間に他の PR がマージされると再度 update branch をして完了を待つ必要がでてきます。

そうでなくても「この PR マージしてもいいですか?」みたいなやりとりが発生していました。

PR を出した人からすればマージされなければ確認環境で確認することができず、作業が溜まってしまいます。
マージする人(今はレビュワー)からするとupdate branch の終了を気にする必要があり、小さいですが、それなりに精神的負荷になっていました。

Mergify を使えば update branch をする順番を Mergify がコントロールしてくれるので、レビュワーが Approve するだけで別の作業に移ることができます。

PR出す人もレビュワーもハッピーになれるかなと思って Mergify を導入しました。 実際レビュワーの方に聞くと「精神的負担が少なくなった!」との声をいただいています。

同じような悩みを抱えている方は導入を検討してはいかがでしょうか??

ではまた!