CIツール一覧

もはや開発ツールとして欠かせないものとなっているCI/CDについて調べました。

 

 

CI/CDとは

CI/CDとは継続的インテグレーション、継続的デリバリーの略で今日のWeb/自社開発などのアプリ開発では必須となっている概念・技術を指す。それぞれは別々の意味だが併せて呼称することが多い(シーアイシーディー)

CIとは

Continuas Integration(継続的インテグレーション)の略で、以前は手作業で行ってきたテスト・検証作業などをツールによって自動化し継続的なビルド・テスト機能を提供します。

CDとは

Continuas Derivery(継続的デリバリー)の略で、ビルド・テストしたツールに対して手作業で行ってきたリリース・デプロイ作業が不要となり、自動的にデプロイしてくれる仕組みです。

CI/CDの特徴

CIの特徴

CIでは、チーム開発を行うにあたって各個人ごとに作成したモジュールをビルド・テストする際に発生する問題を抑止する効果が期待できます。

事前に用意しておいた共有リポジトリに対してモジュールをアップロードすることで、事前に用意されたマージ用のビルド・テストツールが稼働し結果をフィードバックします。

これによって、各開発者が共有リポジトリで発生させているバグに気づくことができるため結合テストで今まで発生していた不要なバグに気づくことができます。

 

 

CDの特徴

CDは、CIを拡張した手法を指します。CIではビルド・テストまで自動化していましたが、CDの概念も加わることでデプロイまで自動化されます。

デプロイまでのスピード感を高めることで市場からのフィードバックを早くもらえるようになり対応速度を飛躍的に向上できます。テスト環境やステージング環境(準本番)などにデプロイ・テストが自動で行え、最終的なプロダクション環境(本番)へのデプロイまで作業速度が上げられます。

承認なしでの継続的デプロイとは違います。(本番に承認なしでリリースすることって障害を除いてあるんでしょうか?)

 

継続的デプロイ

C I/Cが成熟すると最終的にプロダクション環境へのデプロイが自動で行われるようになります。継続的デプロイの一番の特徴はユーザからのフィードバックを迅速に受けることが可能な点です。

まだ自動テストによる検証なども完璧ではないと思うのでこれを導入している企業はそう多くないと思いますがいつかはこれが標準になりそうです。

 

CI/CDの製品一覧

 

Jenkins

「jenkins」の画像検索結果

Jenkinsは2011年頃に登場したCI/CDツール

JenkinsはCI/CDツールの中ではシェアNo.1らしい。クロスプラットフォーム対応のためJavaが稼働可能な環境であればどこでも利用可能。

プラグインも1000を超える数があり利用者も非常に多いです。

 

しかし、デプロイ用サーバを自前で用意しなくてはならない。

(昔はオンプレミスだったと思いますが最近はクラウドなどで簡単に用意可能です。)

ランタイムやSDKなどを各プロジェクト個別に利用できないなど問題もあります。これは複数のプロジェクト・チームを抱える現場では割と致命的かと思われます。

またやや設定が複雑なためJenkins職人と揶揄される場合もあります。

  

CercleCI

「circleci」の画像検索結果

Webアプリ開発では度々目にするSaaS製品です。

circleciはJenkinsと比べて自前のサーバ環境を用意する必要がないため、すぐに利用することが可能でスケーラビリティがあります。

circle.ymlというファイルをリポジトリのルートに配置、実施したいテストなどを記載しておくことで設定に沿ったテストなどを自動的に行ってくれます。

Travis CIと比べて各ジョブでの成功・失敗がわかるのでより詳細な結果をチェックできます。

 

ただし、利用時間が1500分を超えると利用料金が発生するため注意が必要です。

またgithub/Bigbucketでの利用を前提としているためSVNなど古めのバージョン管理を行っている場所では利用できません。

ほかリアルタイム性はない(定期的なビルド実行可)ためこちらも認識しておく必要があります。

 

Travis CI
「travis ci」の画像検索結果

Travis CIはドイツのTravis CI社によって提供されるツール

circleci同様、Travis CI社がテスト環境などを用意してくれるためこちらで自前のサーバなどを用意する必要はないです。テストしたい設定などは、設定ファイルは「.travis.yml」に記述することで対応可能。

 

なお、OSS(無料版)ではpublicクラウドに配置する必要があります。

Githubのプライベートリポジトリと連携して利用する場合は有料プランとの契約が必要となります。

 

GitHub Actions

「GitHub actions」の画像検索結果

 

GitHubが提供するCI/CDツール

バージョン管理ツールとしてはGitHubは鉄板ですので、それを利用していればそのまま利用できるという点が利点はあります。

発表されたのは2018年でかなり新しめの機能です。2019年11月時点で正式版の機能となったため誰でも利用が可能となっています。

GitHub ActionsではWorkflowという設定を行うことであらかじめ定義済みのテストなどが行える。

GitHubの様々な機能(特有)の機能と組み合わせて利用する場合はメリットがあるかもしれませんが、既存のcircleciやTravis CIが現時点では使いやすいそうです。

Wercker

「Wercker」の画像検索結果

2012年にオランダで生まれたCI。無料で利用可能

wercker.ymlファイルを配置することで自動テスト・ビルド・デプロイが可能

実行環境を"box", コマンド実行郡を"step"とした設定の組み替えを柔軟に行いテストできます。

 

しかしwerckerはスケジューラ機能(cronによる定期実行)をサポートしていない。(circleciはサポートしている。)werkckerのAPIからcrontabを叩くことで解決は可能。

werkckerでもワークフローを利用しているが、ymlで完結せず管理画面での定義が必要。

 

GitLab CI

「gitlab ci」の画像検索結果

GitLab CI/CDはGitLab(GitHubのローカル版、無料)で利用できるCI/CDツール

.gitlab-ci.ymlという設定ファイルに必要な設定を定義し利用できます。

circleciと比較してもかなり様々な企業が提供されているので、GitLab環境が用意できるのだればお勧めできるかもしれない。

 

Code Ship

「Code Ship ci」の画像検索結果

CodeShip ProとCodeShip Basicの2種類のプランが存在する。

しかしBasicプランは Dockerをサポートしていないため今日の開発事情的にはそぐわないかもしれない。 またワークフローは共通昨日は利用可能ですがカスタマイズ機能がありません。

 

Proは有償だけあって様々な機能を提供していますがsmallプランは75$〜となっています。

 

■参考

 

https://cloudbees.techmatrix.jp/jenkins/

https://www.redhat.com/ja/topics/devops/what-is-ci-cd