GitHub との強い連携を活用し、エンジニアがより開発に集中できる環境に
株式会社ラブグラフ / 横江 亮佑
CTO・VPoE / CTO
利用プラン | ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|---|
GitHub Team | 10名以下 | 2021年3月 | B to C |
利用プラン | GitHub Team |
---|---|
ツールの利用規模 | 10名以下 |
ツールの利用開始時期 | 2021年3月 |
事業形態 | B to C |
導入の背景・解決したかった問題
導入背景
導入例1:リリースプルリクエストの自動作成
一番最初に GitHub Actions を導入したきっかけは、
リリースプルリクエストを自動作成するためでした。
ステージング環境に自動デプロイされる develop ブランチと
本番環境に自動デプロイされる main ブランチがあり、
本番環境へのリリースをおこなう際には、main ブランチに向けて develop ブランチをマージする必要がありました。
そのため、main ブランチへマージをおこなうリリースプルリクエストをエンジニアが手動で作成し、
その概要欄には、なんのプルリクエストがリリースされるかの一覧を列挙するという作業が、リリースのたびにあったのです。
GitHub に関する自動操作をおこなうことに関して GitHub Actions は向いています。
外部の CI/CD ツールで GitHub の操作をするにはアクセストークンを発行する必要がありますが、
GitHub Actions であれば、YAMLファイル内に ${{ secrets.GITHUB_TOKEN }}
と書けばカンタンに認証をおこなえます。
(参考: https://docs.github.com/ja/actions/security-for-github-actions/security-guides/automatic-token-authentication )
GitHub Actions と gh-release-pr-generator というGo言語で書かれたツールを併用することで、
人間の手を介さず、すぐにリリースプルリクエストが作成されるようになりました。
導入例2:静的コード解析ツールに従ってプルリクエストにコメントを付ける
rubocop
, eslint
, stylelint
といったコードの静的解析をおこなうツールでの実行結果に合わせて、
プルリクエストに自動でレビューコメントを入れてもらうのにも GitHub Actions は便利です。
GitHub Actions 向けのアクションとして、reviewdog のインストールをおこなう reviewdog/action-setup が公開されています。
rubocop や eslint など主要な静的解析ツールであれば、
reviewdog/action-setup を使わずに、reviewdog/action-rubocop や reviewdog/action-eslint といったアクションでカンタンに設定することもできます。
比較検討したサービス
- CircleCI
選定理由
ラブグラフでは、CI/CDツールとしてもともと CircleCI を使用していましたが、
今回のケースのような GitHub に関する自動操作をおこなうことに関しては、
GitHub のトークンを管理する必要がないぶん GitHub Actions がより向いていると考え、使用しました。
導入の成果
どのような成果が得られたか
- リリースプルリクエストの自動作成
- 静的コード解析ツールを用いたプルリクエストへの自動レビュー
- レビュー待ちプルリクエストに関してのリマインド(詳細はこちらの技術ブログをご覧ください)
こういったことを GitHub Actions でおこなうことによって、
エンジニアたちが手動でおこなう作業は減り、開発に向かえる時間が増えました!
導入に向けた社内への説明
上長・チームへの説明
導入に関して、GitHub Team のプラン内で済み、追加費用が必要なかった点は大きなプラス要素でした。
経理関係の新たな承認を得ることなく使い始めることができました。
なお、月3000分以上の使用時間については別途料金が発生する料金形態となっています(※2024年時点)ので、
デプロイなど時間のかかるワークフローに GitHub Actions を使う場合は、追加費用が発生する可能性が高い点にご注意ください。
はじめて導入する際は、5分未満で終わるようなワークフローに対して使用するところから始めてみることを強くお勧めいたします。
活用方法
よく使う機能
- 自動トークン認証
${{ secrets.GITHUB_TOKEN }}
をYAMLファイル内に書くことで、カンタンに GitHub の操作をおこなえます- このトークンの権限設定を
permissions
で書く必要があるパターンもあるのでこちらのドキュメントもご参照ください
- ワークフローのトリガー設定
- こちらのドキュメントに記載されている通り、GitHub Actions の実行タイミングを制御するトリガーの種類は数多くあります
- リモートリポジトリへのコミットがプッシュがおこなわれたタイミングで発火する
push
や、プルリクエスト作成タイミングなどで発火できるpull_request
はもちろん、特定時刻に実行を指定できるschedule
や、手動実行を可能にするworkflow_dispatch
もよく使っています
- actions/github-script
- 単純な GitHub の操作であれば、
actions/github-script
で、GitHub API を呼び出す操作をおこなえます - ラブグラフでは、プルリクエストへのラベルの付与・除去で使用しています(参考記事はこちら)
- 単純な GitHub の操作であれば、
ツールの良い点
- GitHub をすでに使っている会社では、まずは無料で始められる
- GitHub に関しての操作をおこなうことに関しては、他のCI/CDツールを使うよりも、トークンの管理などが不要で手軽
- 公式のドキュメントが豊富で日本語訳もされているため、GitHub Actions 用のYAMLファイルを書くにあたって悩む時間が少ない
ツールの課題点
- デプロイやテストの実行など、重ためのスペックを要求するワークフローに関しては、CircleCI のほうが速く、料金も安く済む可能性がある
- 現状は改善されているかもしれませんが、CircleCI から GitHub Actions へのリプレースを試した2023年当時、Larger Runner や Self-Hosted Runner はコンテナ起動までの時間が安定せず実行に時間がかかり、結果として料金が高くなってしまう問題がありました
- 実行結果の出力に関しては CircleCI のほうが見やすいと感じる
株式会社ラブグラフ / 横江 亮佑
CTO・VPoE / CTO
よく見られているレビュー
株式会社ラブグラフ / 横江 亮佑
CTO・VPoE / CTO
レビューしているツール
目次
- 導入の背景・解決したかった問題
- 活用方法