ブランチのマージ作業を効率化するGitHub Actionsワークフローの導入

株式会社フィッツプラス / yuma-ito-bd
テックリード / テックリード / 従業員規模: 11名〜50名 / エンジニア組織: 11名〜50名
利用プラン | ツールの利用規模 | 事業形態 |
---|---|---|
GitHub Team | 11名〜50名 | B to B B to C |
利用プラン | GitHub Team |
---|---|
ツールの利用規模 | 11名〜50名 |
事業形態 | B to B B to C |
アーキテクチャ
.png?disposition=inline)
アーキテクチャの意図・工夫
ワークフローの主な利用手順は以下です。
- 開発者がステージング環境にデプロイしたいブランチのプルリクエスト上で
/merge staging
とコメントします。 - コメントの作成イベント (
issue_comment
イベント)が発火し、ブランチマージ用のGitHub Actionsワークフローが起動します。 - ワークフローにて、stagingブランチに開発中のブランチをマージ&プッシュします。
- プッシュイベントが発火します。(注:GitHub Appを利用してトークンを生成しないとイベントが発火しません)
- デプロイ用のGitHub Actionsワークフローが起動し、ステージング環境へアプリケーションがデプロイされます。
導入の背景・解決したかった問題
導入背景
前提
GitHub Actionsの導入ではなく、ブランチのマージを効率化するためのGitHub Actionsワークフローの導入について説明します。 このワークフローは「Branch Merger」と名付け、自チームの運用ルールに合わせた自作のワークフローです。
具体的なコードや詳しい説明は以下のテックブログをご覧ください。
GitHub Actionsでブランチのマージを効率化する方法
ツール導入前の課題
フィッツプラスでは、動作検証用のステージング環境を用意しており、その環境にて開発中の機能をテストしています。
開発用のブランチをstaging
ブランチにマージするとデプロイ処理が走り、ステージング環境に開発中の機能を反映させることができます。
そのため、開発中のブランチをstaging
ブランチへマージする作業が度々発生するのですが、以下のような小さな手間がありました。
staging
環境へデプロイする前に自動テストなどのCIが通るまで待つ必要があります。- CIが通るまでの間、別のブランチで開発やレビューを進めています。 そして、いざCIが通って開発中のブランチをマージする際、
git switch
でブランチを切り替えたり、作業中のコードをgit stash
したりする手間がかかります。
どのような状態を目指していたか
このワークフローによって、ブランチのマージ作業が楽になることを目指しました。
具体的なシチュエーションは以下です。
- ローカル環境で別の開発作業を行っていても、ブランチを切り替える必要がありません。
git worktree
コマンドを使ってマージ作業を行うこともできますが、コメント1つでマージできるのは便利です。
- DependabotやDevinが作ったプルリクエストをローカル環境にプルして、マージする手間が省けます。
- DependabotやRenovateなどのライブラリ更新ツールやDevinなどの生成AIが作ったプルリクエストをGitHub上からマージすることができます。
選定理由
YAMLファイルを書くだけでワークフローを構築できるのがとても便利です。
チーム内ではすでにGitHub Actionsワークフローを使って定型作業を自動化しているので、今回も同様にGitHub Actionsを用いることにしました。
導入の成果
改善したかった課題はどれくらい解決されたか
「プルリクエスト上でコメントするだけでマージできる」という手軽さによって、ブランチの切り替えやリモートブランチをプルする手間はかなり削減できたと感じています。
ただし、マージ時にコンフリクトが発生した際は手動でコンフリクト解消を行う必要があり、ローカル環境でのマージ作業が0になったわけではありません。
どのような成果が得られたか
Branch Mergerワークフローの導入後、各リポジトリで/merge staging
コメントを見かけるようになりました。
チーム全体で活用することができています。
また、開発生産性に関するふりかえり会にて、「Branch Mergerワークフローが使いやすい」というメンバーの声も聞くことができました。
導入時の苦労・悩み
ワークフローを追加するにあたり、下記のような点に苦労しました。
- GitHub Appの設定:
- GitHubにプッシュする際にGitHub Appから発行されたトークンを利用する必要がありました。
- 弊社では、GitHub Actionsの
push
イベントで起動するワークフローによって、ステージング環境へのデプロイを行っています。 GITHUB_TOKEN
シークレットを用いる場合、Branch Mergerワークフローによってstaging
ブランチをプッシュした際にpush
イベントが発火せず、他のワークフローが動かないという制限があります。リポジトリの GITHUB_TOKEN を使ってタスクを実行した場合、GITHUB_TOKEN によってトリガーされたイベントでは (workflow_dispatch と repository_dispatch を除きます)、新しいワークフロー実行は作成されません。 これによって、予想外の再帰的なワークフローの実行が生じないようになります。 https://docs.github.com/ja/actions/concepts/security/github_token#when-github_token-triggers-workflow-runs
- つまり、
GITHUB_TOKEN
シークレットを用いるとステージング環境へのデプロイができなくなってしまいます。 - この制限を回避するため、GitHub Appを作成してそれから発行されたトークンを利用するようにしました。
- ワークフローの検証:
- GitHub Actions ワークフローを検証するには、ワークフローのファイルをデフォルトブランチにマージしなければならない点も苦労しました。
- 今回のワークフローはユーザーがコメントすることによって起動します。コメントの追加イベントによってワークフローを起動するには、ワークフローのファイルをデフォルトブランチにマージしなければなりません。そのため、ワークフローの検証を行うために何度もプルリクエストを作成する必要がありました。
導入に向けた社内への説明
上長・チームへの説明
ワークフローの使い方やメリットをチームメンバーに「プルリクふりかえり会」というミーティングで説明しました。 プルリクふりかえり会とは、チーム全体に周知したいプルリクエストを共有したり、行き詰まっている問題を相談したりするためのミーティングです。 今回のように「便利なワークフローを作ったので使ってみてください」という情報を共有するための場です。
また、フィッツプラスではGitHub Actionsなどを利用して、作業の自動化・効率化を進める活動は積極的に推奨されています。 そのため、特に反対意見などはなく、導入を進めることができました。
活用方法
- 開発中のブランチにて、CIが成功したのを確認したら
/merge staging
とコメントし、stagingブランチにマージします。(ステージング環境へ自動的にデプロイされます。) - DependabotやRenovate, Devinによって作られたプルリクエストをstagingブランチにマージし、ステージング環境で検証します。
よく使う機能
GitHub Actionsでよく使う公開アクションを紹介します。
actions/upload-artifact
: ファイルをアップロードできるアクションactions/download-artifact
: ファイルをダウンロードできるアクションslackapi/slack-github-action
: Slackに通知できるアクション
ツールの良い点
- YAMLファイルを記述するだけで、簡単にワークフローを構築することができる。
- 典型的なアクション(ファイルのアップロード、キャッシュなど)はすでに公式でサポートされており、ワークフローへの導入が簡単。
- マシンリソースを柔軟に変えたり、複数マシンによって並列処理行うことができる。
- プルリクエスト機能と連携して、をマージする際に必須チェックすることができる。
ツールの課題点
- デフォルトブランチにマージしなければワークフローの検証ができない場合がある(例:コメント追加時のイベント)
- 権限の設定がややこしい。どの操作でどんな権限が必要なのか少し分かりづらい。
ツールを検討されている方へ
GitHubでソースコードを管理している場合、手軽に導入することができると思うのでぜひ使ってみてください。

株式会社フィッツプラス / yuma-ito-bd
テックリード / テックリード / 従業員規模: 11名〜50名 / エンジニア組織: 11名〜50名
よく見られているレビュー

株式会社フィッツプラス / yuma-ito-bd
テックリード / テックリード / 従業員規模: 11名〜50名 / エンジニア組織: 11名〜50名
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法