技術

CI/CDのメジャーどこ一覧

CI/CDは、おそらく使っていない現場はないんじゃないかというぐらい、現代の開発現場では必須のツールとなりました。

Continuous Integration/Continuous Deliveryの略で、日本語では継続的インティグレーション/継続的デリバリーと呼ばれています。

ワードからだと何やっているかわかりづらいですが、要はGitリポジトリを更新(Pushやマージなど)する度に、自動でテストやビルド、デプロイまでやることです。

CI/CDが浸透して、かなりの年数が経ちました。これまで数々の製品が登場して移り変わりがありました。そんな、製品の特徴や選定基準を、完全な独断で一覧かしてみました。

CI/CDの製品一覧

Jenkins

昔はフリーのCI/CDツールはJenkinsしかありませんでした。その流れで今もJenkinsを使っている現場はあります。

Jenkinsの元々の機能はジョブ管理ツールですが、プライグインやら何やらを盛々設定すれば、CI/CDとしても使えます。

CI/CDの実行部分をshellファイルで作成し、それらをつなぐパイプラインはGroovyという独自言語で書いていきます。CI/CD自体が一種のプログラミングになっており、そこがそもそもエラーを吐いたりして、メンテコストがかかります。そもそも製品自体がサーバーを立ててインスールする方式です。これらの方法は、今の時代にあっていません。

今から新規にCIを構築する場合、Jenkinsを選ぶ理由はまったくないと言えます。

逆に今でもJenkinsを使っている現場は、そうとうレガシーです。システムの複雑化や、組織、管理体制などが問題で製品のリプレースに踏み切れていない、CIの作業が属人化して職人みたいな人がいてそれで回るので良しとしているなどでしょうか。

そういった現場はCI以外にもいろいろと問題が多い可能性が高いので、よっぽどの理由がなければ、案件概要の使用技術にJenkinsが入っているやつは応募を見送ってもいいかと思います。

Circle CI

昔からあるCIですが、今もアップデートし続けていて、まだまだ現役です。クラウドサービスがあり、設定はyamlで書けてパイプラインも完備している。GitHubとの連係もやりやすいです。

今のCI/CDのメジャーな機能や運用方法をカバーしているので、Circle CIを使っているところは、あえて別製品にリプレースする必要はないでしょう。

ただ有料なのと、他に言い製品が出てきている、やっぱりちょっと古いイメージがあるなどの理由から、新規案件で選ばれる可能性は少ないかと思います。SREがしっかりしている大きな会社で、全プロジェクトのCIはCircle CIでやるというポリシーがあるところぐらいでしょうか。新規プロジェクトでCircle CIを使うのは。

CodeBuild, CodePipeline (通称Code兄弟)

AWSが提供しているCI/CDです。

AWSはCodeXXXというサービスがいくつかあって、これを総称してCode兄弟とかCode3兄弟とかと呼ばれています。

この内、GitリポジトリであるCodeCommitはお世辞にも使いやすいと言えませんが、CodeBuildやCodePipelineは結構使いやすいです。こちらもCodeBuildの設定はyamlで書けます。PipelineはGUIで設定できますが、Teraformでやってしまうことも多々あります。動作環境がFargateなどのAWSの場合、候補になるでしょう。

またAWS製品なので、他社とのアカウントの連携がやりやすかったり、社内稟議が通りやすいといった利点もあります。

GitHub Acitons

GitHub製のCI/CDツールです。後発ということもあり、最初は機能不足感がありましたが、今はだいぶ出そろってきました。ドキュメントも充実してきており、たいていのことはググればすぐできるようになります。

新規プロジェクトで特に何の縛りも無い場合は、一番の有力候補になるかと思います。私も最近はGitHub Actionsを触ることが多いです。

Dagger

2022年4月に公開されたばかりのCIツールです。今月の『Software/Design』(2022.07月号)にちらっと紹介されていました。

使ったことがないので詳細はわかりませんが、複数のパイプラインで動かせるようなものが作れて、ベンダーロックインから解放されるとのことです。

CI/CDは学習コストはたいしたことないとは言え勉強してもそれほど面白いものではありませんし、メーカー依存の書き方や考え方から解放されるのはいいことですね。広まってくれたら嬉しい気もしますが、GitHub Actionsが使いやすいのでもうこれでいいのではという気もしますね・・・😅

まだ本番環境で使っているという事例はないと思いますが、今後どうなっていくのやら。

まとめ

以上、CI/CD製品のメジャーどこをリストアップして、独断と偏見で選定基準などを考えて見ました。

今なら、特に縛りがないならGitHub Actions、Circle CIやAWSの縛りがあるならそれに従う、Jenkinsの現場ならフェードアウトを視野に入れるという感じでしょうか。