お問い合わせ

自動でデプロイが進む仕組みは?-GitHub Actionsで実現するCI/CD-【Luxucomを支える技術 #12】

こんにちは、かびらです。

今回はGitHub Actionsについて解説します。

GitHub Actionsとは?

GitHub Actionsは、GitHub上で動く自動化ツールです。

プッシュやマージといったイベントをきっかけに、あらかじめ定義した処理、いわゆるワークフローを自動で実行してくれます。

GitHub Actionsは、CI/CDの仕組みを支える、中心的な存在です

GitHub Actionsを使用したCI/CDの例

GitHub Actionsを使用したCI/CDの例を見てみましょう。

まず、開発者がリポジトリにコードをプッシュすると、GitHub Actionsはプッシュ操作を検知して、自動でCIを実行します。

開発者は、CIでテストやビルドが正常に完了していることを確認し、mainブランチにマージします。

すると今度は、GitHub Actionsがマージ操作を検知し、CDが動きます。

CDではデプロイが行われ、本番環境に自動でリリースされます。

このように、GitHub Actionsが開発からリリースまでの流れを自動でおこなってくれるのです。

GitHub Actionsを採用した理由

次にLuxucomで、GitHub Actionsを採用した理由についてです。

当初CICDパイプラインに、GitHubのGitHub ActionsとAWSのCodeBuildのどちらを使用するか悩んでいました。

検討した結果、最終的にはGitHub Actionsを採用しました。

ここでは、GitHub ActionsとCodeBuildの比較を見てみましょう。

実装面

まずは、実装面。

GitHub ActionsはYAMLで簡単に定義できます。

一方で、CodeBuildはbuildspec.ymlなどの設定が複雑でした。

シンプルな実装を求めるLuxucomにとっては実装面ではGitHub Actionsに軍配が上がります。

運用

次に、運用面。

先ほどの例でも説明したように、GitHub Actionsは、プッシュやマージなどGitHubイベントを直接トリガーにできます。

一方CodeBuildは、Webhook連携の手間が必要でした。

Luxucomではバージョン管理ソフトにGitHubを利用していることもあり、GitHub中心の開発フローに自然に統合できたことは大きいです。

コスト

最後に、コスト面。

こちらが一番の決定打でした。

GitHub Actionsは、GitHubのTeamプランやProプランで月2,000分まで無料。

一方でCodeBuildは、月100分+100ビルド分無料です。

GitHubの有料プランを利用しているLuxucomにとっては、運用コストを抑えつつ、自動化を実現できるのは大きなメリットでした。

以上、これら3つの要素を鑑みて、LuxucomではGitHub Actionsを採用しました。

GitHub Actionsと関連するアーキテクチャ

次に、LuxucomでGitHub Actionsと関連するアーキテクチャを見ていきましょう。

LuxucomのCI/CDは、GitHub ActionsとAWSが連携して動いています。

開発者がコードをプッシュすると、GitHub ActionsがCIを実行してテストやビルドを行い、Terraformを使ってインフラ情報を取得します。

そして、マージ時にはCDが動き、ECRにアプリのイメージをプッシュして、ECSのサービスを自動で再起動します。

このように、開発からデプロイまでを完全に自動化しています。

Terraformについては、次回で詳しく解説します。

GitHub Actionsを使って良かった点

次に、Luxucomで、GitHub Actionsを使って良かった点です。

まず、ワークフローの対象ブランチを切り替えることで、試験環境での動作確認が簡単に行えるようになりました。

また、Terraformと組み合わせることで、インフラやアプリの変更を自動で反映でき、リリース作業がとてもスムーズになりました。

GitHub Actionsを使って難しかった点

最後にGitHub Actionsを使って難しかった点です。

GitHub Actionsを使い始めたころは、YAMLの書き方や構文を覚えるのに少し苦労しました。

また、共通モジュールをどう分けて管理するかにも悩み、安定して動作するまでには試行錯誤を重ねました。

しかし、この経験を通して、今ではリリース運用がとても楽になりました。

さいごに

今回は、LuxucomのCI/CDを支えるGitHub Actionsについて解説しました。

GitHub ActionsをCI/CDと組み合わせることで、開発やリリースの労力を省力化できることが分かったかと思います。

次回は、インフラの管理をコード化しているTerraformについて詳しく解説します。