どうも、小野です。
GitHub Actionsがついに一般公開されましたね。個人的には待ち望んでいた機能でもあります。
突然ですが、皆さんはCI/CDに何を使ってますか?
私は現在、業務でCI/CDにJenkinsを利用しています。 このJenkinsはAWSのEC2インスタンス上に構築しています。
- なんでJenkins?
- CircleCIなどのクラウドサービスは使わないの?
- AWS使ってるんだったら、Code系サービスのほうがいいのでは?
と思う方もいらっしゃると思います。これには理由があります。
なんでJenkins?
Jenkinsを使い始めたころは、まだCircleCIはありませんでしたし、ましてやAWSのCode系サービスもなく、 当時はJenkinsが主流でした。その頃から使い続けていたので、ある程度の知識も持っています。 あとは、ビルド、デプロイするためにそこまで複雑な設定はなく、カスタマイズも柔軟にできたという理由で使っていました。
CircleCIなどのクラウドサービスは使わないの?
Saas型のサービスは無料プランなどもあるのですが、業務で利用するスペックとなると、料金がかかってしまいます。 EC2のコストも掛かってるじゃん。と言われればそれまでですが。。。 あとは、Jenkinsから移行してまでのメリットが感じられなかったのが正直なところですね。
AWS使ってるんだったら、Code系サービスのほうがいいのでは?
AWSのサービスは、環境ごとにルートアカウントを分けているので、どのアカウントのCode系を使えばいいかが明確でないし、 Code Build、Code Deployなど複数のサービスをまたがって使う必要があったため、個人的には敷居が高く感じました。
ここから本題です。
JenkinsからGItHub Actionsに移行を検討している理由を述べたいと思います。
理由1 GitHub Teamプランに加入している
月々2500円のTeamプランを利用しています。 実はGitHub Actionsは完全無料ではなくて、Privateリポジトリの場合は従量課金になります。 ただ、無料で利用できる範囲が加入しているプランによって変わってきます。
実行時間無料枠
プラン | 分/月 |
---|---|
Free | 2000 |
Pro | 3000 |
Team | 10000 |
Enterprise | 50000 |
無料枠を超えた場合、以下の料金がかかってきます。
OS | ドル/分 |
---|---|
Linux | 0.008 |
Windows | 0.016 |
MacOS | 0.08 |
つまり、Teamプランを利用しているので、月に10000分は実行できることになります。 今絶賛開発中のシステムのビルド時間が10分程度なので、1000回は実行できることになりますが、 実際は100回程度なので、実質無料で利用できるわけです。これでEC2の利用料が浮きますよね。
ちなみに、Publicリポジトリについては完全無料となっております。
理由2 GitHubの親和性
ソース管理にはGItHubを利用しているので、親和性がとても高いです。(当たり前ですが) 例えば、他のサービスを利用する場合、PrivateリポジトリからPullする際に何かしらの認証情報を設定する必要があります。
あとは、ワークフローを実行するトリガーのパターンが多いです。 他のサービスの場合、大体PullRequestがマージされたタイミングで行うことが多いと思いますが、 GitHub Actionsの場合、Issueが登録された、ブランチが作成されたなど、GitHubで可能なアクションを数多く網羅しています。
ソースに変更がないのに、Issue登録トリガーでワークフローを走らせる意味あるの?と思うかもしれませんが、 ワークフローで定義できるJobも色々あって、例えばSlackに通知などもできるので、Issueが登録されたら、Slackへ通知とかもできます。
理由3 Microsoftの存在
やはり、クラウドサービスを利用する際、サービスの将来が気になると思います。 昨年、GitHubはMicrosoftに買収され、今はMicrosoftの傘下になりました。 親がMicrosoftである以上、GitHubが消えることはないでしょう。
理由4 サーバ管理からの開放
サーバはAWSのEC2を使っていますが、EC2の管理は自分たちで行う必要があります。 その上、Jenkinsのメンテナンスも必要になってきます。 GitHub Actionsの場合は完全フルマネージドなので、サーバを意識する必要は全くありません。
あとは、理由その1でも述べましたが、サーバ運用をやめることでランニングコストの削減にも繋がります。
本当にJenkinsから移行できるの?
絶賛調査中ですが、現時点では可能だと思ってます。結局、シェルが使えるので何でもできますよね。
あと、調査時のメモをまとめた記事がありますので、興味がある方は読んでみてください。
皆さんも、GitHub Actionsを使っていきましょう。