GitHub ActionsにCIサービスを統一して効率的な開発を実現
ファインディ株式会社 / puku0x
テックリード / フロントエンドエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
利用プラン | ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|---|
Enterprise | 11名〜50名 | 2020年7月 | B to B B to C |
利用プラン | Enterprise |
---|---|
ツールの利用規模 | 11名〜50名 |
ツールの利用開始時期 | 2020年7月 |
事業形態 | B to B B to C |
導入の背景・解決したかった問題
導入背景
ツール導入前の課題
- 利用するCIサービスが複数あり、余分なコストが発生していた
- リポジトリによって利用するCIサービスが異なり、ノウハウの共有が難しかった
- CIのキューイングによる待ち時間が増えていた
どのような状態を目指していたか
利用するサービスを統一することで以下の状態を目指しました。
- コスト削減
- 円滑なノウハウの共有
- 待ち時間の少ないスピード感のある開発
比較検討したサービス
- AWS CodePipeline
- CircleCI
比較した軸
- 価格
- CI実行時間
- 開発者体験
選定理由
- GitHubに統合されていること
- エコシステムの充実さ
導入の成果
GitHubに統合されたCIであるため導入は非常に簡単でした。リポジトリ内の様々なイベントをトリガーにできる点も便利でした。Issueの作成や特定ファイルの変更といった細かな制御が可能であるため、開発フロー自体の改善にも繋がりました。
- コスト削減
CIにかかる費用を年間30万円ほど削減できました。 - 円滑なノウハウの共有
GitHub Actionsに統一したことで、ノウハウの共有がスムーズになりました。新規プロジェクト立ち上げの際も既存の設定をコピーするだけでCI環境が構築できるため非常に手軽でした。 - 待ち時間の少ないスピード感のある開発
現在利用中のプランでは、GitHub hosted runnerの最大同時ジョブ数は500、Larger runnerの最大同時ジョブ数は1,000であるため、キューイングによる待ち時間はほぼ発生しなくなりました。この他、Matrixを活用した並列化やキャッシュの活用、仮想マシンの性能アップ等によりCI実行時間の削減にも成功しました。
導入に向けた社内への説明
上長・チームへの説明
- テックリードからコストやキューイングの制約など、現状の課題を上長・チームに共有
- コストの概算および利用経験を元に使い勝手の共有を行い、上長・チームと合意形成
一連の議論はGitHubのIssue上で行い、意思決定の透明性を確保しました。
利用経験のあるテックリードが移行を主導しました。その際、まずLintなどの影響範囲の小さいジョブからGitHub Actions化し、動作検証を済ませてから徐々にCI全体を移行することで、手戻りの発生を最小限にしました。
活用方法
よく使う機能
- Cache
CIの高速化に活用しています - Composite action
再利用可能なActionを定義すれば記述を省力化できます - Larger runners
負荷に応じて性能を上げることでCIを高速化しています
ツールの良い点
- GitHubを使っていればすぐに利用できる
- エコシステムが充実している
ツールの課題点
- キャッシュの容量に10GBの制限があること
ツールを検討されている方へ
GitHub Actionsを用いたCIの高速化手法についても発信しております。是非ご覧ください。
今後の展望
Armランナーが正式リリースされたことを受け、さらなるコスト削減を目指し移行しています。
著者
- ファインディ株式会社フロントエンド テックリード @puku0x
- ファインディ株式会社テックリード @starfish719
ファインディ株式会社 / puku0x
テックリード / フロントエンドエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
複数社を経てファインディ株式会社に参画。フロントエンドテックリードとして社内のフロントエンドの設計や技術選定に携わるほか、開発環境の改善やCI/CDの整備などにも取り組む。
よく見られているレビュー
ファインディ株式会社 / puku0x
テックリード / フロントエンドエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
複数社を経てファインディ株式会社に参画。...