自己紹介
みんなのコードのエンジニアの板東です。
2020年1月にみんなのコードに入社し、現在は主にプログルのバックエンドの開発をしています。
みんなのコードに入社する前は、大学院で宇宙ロボットについて研究したり、メーカーで勤務したりしていました。
Webエンジニアとしては未経験という状態でしたが、入社3ヶ月目で、プログルのCI/CDをCircleCIからGithub Actionsに移行する というプロジェクトを担当させていただきました。
今回は、CI/CDを移行することになったきっかけや、移行後の所感などについてお話させていただきます。
CircleCIじゃダメなの?
プログルは、そのリリース時から長らくCircleCIを利用していました。 実際のところ、機能的な問題は全くありません。
ただ、開発メンバーが増えていくにつれ、大きな問題が出てきました。CircleCIの料金です。
CircleCIはクレジット料金の他に、プロジェクトに関わるユーザー数に応じて課金されるようになっています。
開発チームの人数を考えると、Performanceプランの
最初の 3 ユーザーまで月額 $15
ではどうがんばっても収まらず、少なくとも$70は超えてしまいました…。 (CircleCIにはNPOプランも無さそうでした…)
そこでGithub Actionsですよ
そこで目をつけたのが Github Actions でした。
弊社はGithubのNPOプランに入っており、GithubのTeamプランを無料で使わせていただいています。
GithubのTeamプランでは、Github Actionsの利用時間の10000分が含まれているため、 弊社では Github Actionsを10000分まで無料で使用できる とのことです(ありがたや…🙏)。*1
よって、Github Actionsを使わない手は無いなと感じました。
また、GitHub Actionsのワークフロー構文に関するページを、以前CircleCIでCI/CDするために書いていた config.yml
ファイルと照らし合わせて読んでみたところ、CircleCIと比べてそんなに使い勝手に大差ないのかなと感じたのもあり、CI/CDをGithub Actionsに移行することにしました。
CircleCIと比べて感じたこと
pushするブランチごとにyamlファイルを作成する必要があるらしい
例えば、テストや構文チェックをmasterブランチにpushしたら実行、デプロイをproductionブランチにpushしたら実行するようにしたいとします。
この時、CircleCIなら workflows
キーを用いて1つのyamlファイルでこれらを定義できますが、Github Actionsだと、workflows
キーみたいな記法がないので、
masterブランチにpushしたら実行するワークフロー・productionブランチにpushしたら実行するワークフロー、それぞれのyamlファイルを作成する必要があるようです。
push先の各ブランチごとのワークフローを1つのファイルにまとめるのか別々のファイルに分けるのか、この辺は好みが分かれるのかなと思いました。
ジョブ内各ステップの途中経過を確認しづらい感
CircleCIのUIだと、CI/CD実行時に、そのステップで行われる処理の途中経過をサクサク表示してくれるので、その点が良いなぁと感じました。
ただ、issueやプルリクの画面から、タブを切り替えるだけでCI/CDの様子を確認できる点は非常に便利です。
とはいえそこまで大きな差は無さそう
色々好き勝手書き連ねましたが、実際のところ、使い勝手はGithub Actions・CircleCI双方で、そこまで大差ないような気がします。
むしろ、GitHubのNPOプラン内に収めることでコストダウンできたので、Github Actionsに移行してよかったなと思っています!
本プロジェクトを振り返って
Github Actionsは、去年の11月にGenerally Availableになったという新しめのサービスですが、このような 新しめのサービスを積極的に取り入れられる環境に身を置けているのは幸せなこと だなと思いました。
また、今後も何か新しくて良さそうな技術やサービスが出てきた時は、積極的に取り入れられるようにしたいなと思います。
We Are Hiring!
特定非営利活動法人みんなのコードでは一緒に働く仲間を募集しています
最後に、みんなのコードでは、一緒にプログラミング教材「プログル」を開発してくれる方を募集しています。この記事を読んで興味を持っていただいた方、ぜひお気軽にご応募ください🙂
*1:2020年の4月14日に、5月14日からのTeamプランでのGithub Actionsの利用時間は3000分に変更されるという内容の発表がありました。