これら 2 つの一般的な継続的インテグレーション ツールとその違いについて説明します。
ソフトウェア開発ライフサイクルの手法は、過去 10 年間で劇的に変化しました。
以前は、ウォーターフォール モデルが前進する方法でしたが、その後、開発が反復的に行われるアジャイル手法が登場しました。そして現在では、DevOps により、完全なアプリケーションが開発およびデプロイされるまで、開発と運用の両方が反復的かつ継続的に行われます。
継続的インテグレーションと継続的デリバリを表す CI/CD という用語は、非常に一般的になりました。これは、アプリケーションをより迅速かつ信頼性の高い方法で開発および配信するのに役立つ DevOps プラクティスです。これは、CICD ツールを使用して、ビジネス要件から実稼働環境への導入までのすべてのステップを自動化する方法論です。すべてを手動で行うよりもはるかに優れており、安全です。
現在、CI/CD に利用できるツールは数多くあるため、適切なツールを選択するのが難しい場合があります。
なぜジェンキンスなのか?
Jenkins は 、最も人気のあるオープンソースの継続的統合ツールです。これは、継続的統合ソリューションの事実上の標準です。
Jenkins は Java 上で実行されるため、Windows や Linux などの主要なオペレーティング システムにインストールできます。これは元々、Java アプリケーションのビルド自動化ツールとして作成されました。それ以来、大幅に進化し、他のプラットフォームやツールと簡単に統合できる 1,400 以上のプラグインがあります。
Jenkins は、ソフトウェア開発プロセスにおける継続的統合と継続的デリバリーのための中心的なツールです。インストールは簡単で、ブラウザから簡単にアクセスできるプロジェクト管理用のダッシュボードを提供します。
開発者は Jenkins を使用して、コードを自動的に構築、統合、テスト、デプロイします。まず開発者がコードをチェックインし、次に Jenkins が変更されたソース コードを取得し、ビルドをトリガーし、必要に応じてテストを実行します。ビルドが完了すると、Jenkins ダッシュボードに出力が表示され、設定されている場合は開発者に通知を送信できます。
なぜチームシティなのか?
TeamCity は 、同じく Java ベースの商用 CI/CD サーバーです。これは、JetBrains によって作成されたビルド自動化および管理ツールです。
TeamCity のスローガンは「 すぐに使える強力な継続的インテグレーション 」であり、このツールはそれを正当化します。 Jenkins のほぼすべての機能を提供しますが、いくつかの追加機能もあります。 TeamCity は Docker と統合して、docker-compose を通じてコンテナーを自動的に作成できます。 Jira ツールの統合サポートがあり、問題を簡単に追跡できます。
TeamCity は .NET Framework をサポートしており、TeamCity を Eclipse、Visual Studio などのいくつかの IDE と簡単に統合できます。アーティファクト リポジトリを構築するための統合により、TeamCity はアーティファクトを TeamCity サーバー ファイル システムまたは外部ストレージに保存できます。
TeamCity の無料バージョンの Professional サーバー ライセンスを使用すると、100 個のビルドと 3 個のビルド エージェントをコストなしで作成できます。
ジェンキンス vs. チームシティ
オープンソース vs. 商用
最も基本的な違いは、Jenkins がオープンソースの継続的統合ツールであるのに対し、TeamCity は商用ツールであることです。 Jenkins プロジェクトは MIT ライセンスの下でリリースされ、世界中の開発者によってサポートされています。 TeamCity は、親会社 JetBrains によって開発および保守されています。
インターフェース
TeamCity のインターフェイスは素晴らしく、継続的インテグレーションを始めて CI ツールを探している多くの初心者を惹きつけるのに役立ちます。 TeamCity インターフェイスでは、ビルドをタグ付け、コメント、ピン留めして、ビルドをより適切に整理できます。
Jenkins のインターフェイスは昔ながらのものです。見た目はあまり魅力的ではありませんが、UI の観点からは改善の余地が非常に大きくあります。
独自の機能
Jenkins には多くの機能が組み込まれているわけではありませんが、その巨大なプラグイン エコシステムは、他の CI ツールが提供できない大量の機能を提供します。このようなプラグイン機能を使用すると、Jenkins はビルドの作成とコードの分析に慣れており、コードの品質の向上に役立ちます。
一方、TeamCity には、いくつかの通常の CI ツール機能とは別に、すぐに使用できる機能が複数付属しています。 Java、Ruby、.NET などの複数のプラットフォームをサポートしています。TeamCity を通じて Docker イメージを構築することもできます。 Bugzilla と Jira のサポートにより、問題追跡を簡単に実行できます。また、ビルドの変更と失敗の履歴は、統計に関する過去の情報を保持し、過去のビルドを実行し、テスト履歴レポートを保存するために保存されます。
インストール
Jenkins をシステムにインストールするには、Java がシステム上に存在する必要があります。 Jenkins のセットアップは、両方がシステム上にすでに存在している場合は簡単です。インストールが完了したら、Web インターフェイスで Jenkins の作業を開始できます。
TeamCity のインストールも非常に簡単です。 TeamCity Server をダウンロードし、ドキュメントにアクセスして、記載されている手順に従う必要があります。
統合
統合機能について言えば、Jenkins の競合に近い CI ツールはないと思います。 Jenkins が市場で人気があるのは、何百もの無料プラグインとの統合が提供されているためです。
Jenkins と比較して、TeamCity ははるかに少ないプラグインと統合できます。ただし、独自の統合機能はほとんどなく、それが「すぐに使える機能」になります。 .NET Framework をサポートし、Visual Studio Team Services と統合し、AWS、Azure、GCP、VMware などのクラウド プロバイダーとのクラウド統合を提供します。
安全
TeamCity が商用であることの良い点は、JetBrains が TeamCity をサポートしているため、セキュリティ上の発見に対して優先的に修正されることです。 TeamCity は、ビルド パイプラインで脆弱性スキャンを実行できる Snyk セキュリティ プラグイン との統合を提供します。これは、ビルドに存在するすべてのリスクと脅威を特定して修正するのに役立ちます。
Jenkins がオープンソースであることを考慮すると、すべては開発者のコミュニティに依存するため、リスクの軽減が遅れる可能性があります。
コミュニティ
Jenkins のコミュニティは TeamCity よりも広大です。 Jenkins はオープンソースであるため、あらゆる開発者がこのプロジェクトに貢献できます。毎日、新しい開発者がこのプロジェクトに貢献し続け、新しい機能を追加し、より良いツールにしています。
一方、TeamCity は商用ツールであり、JetBrains チームによって保守されています。このツールを成長させるための専門的なサポート コミュニティがあります。
価格設定
Jenkins はオープンソースなので無料で使用でき、そのため多くの組織にとって好ましい選択肢となっています。組織は、Jenkins のような CI ツールに何も支出しないことで、かなりの金額を節約できます。
TeamCity は無料では使用できません。 Professional サーバー ライセンスと Enterprise サーバー ライセンスの 2 つのライセンス が付属しています。プロフェッショナル サーバー ライセンスでは、100 個のビルド構成と 3 個のビルド エージェントを無料で使用でき、その後は 299 ドルで 1 個のビルド エージェントと 10 個のビルド構成を追加できます。 TeamCity エンタープライズ サーバー ライセンスは 3 エージェントから始まり、1,999 ドルから無制限のビルド構成を提供します。
比較表
ジェンキンス | チームシティ | |
で書かれている | ジャワ | ジャワ |
開発者 | CloudBees、川口康介、フリーおよびオープンソース ソフトウェア | ジェットブレインズ |
ライセンス | MITライセンス | 独自の商用ソフトウェア |
特徴 |
|
|
使いやすさ | はい | はい |
ユーザーインターフェース | 非常に基本的なインターフェイス | 魅力的で美しいインターフェースを備えています |
コミュニティ | オープンソースなのでコミュニティが大きい | ジェンキンスと比較して小さい |
価格設定 | 無料 |
Professional Server ライセンスは、ビルド エージェント 3 つを無料にした後、ビルド エージェントごとに 299 ドルかかります
一方 Enterprise Server ライセンスの費用は 1999 ドルから |
統合 | 1400以上の統合 | 300以上の統合 |
安全 | 安全性が低い | より安全な |
API | JSON、Python、RESTful API: XMLをサポート | サービスメッセージを使用してRESTful APIをサポートし、Open APIを使用してプラグインを作成します |
プログラミング言語のサポート | Java、PHP、C、C++、Fortran、Python、その他多くのスクリプト言語 | Python、C++、Java、.NET、Ruby、PHP、Node.js など |
コンテナのサポート | Jenkins 用の Docker プラグインの使用 | すぐに使えるファーストクラスの Docker サポート |
リリースサイクル | より頻繁に | 頻度が低い |
報告 | ビルドとテストの詳細なレポートを提供します | より優れた Web UI を備えたレポートを提供します |
結論
これで、最も人気のある 2 つの継続的統合ツール、Jenkins と TeamCity の違いがわかりました。
組織に適した CI ツールを選択するときは、ホスティング オプション、利用可能な統合、再利用可能なコード ライブラリ、コンテナーのサポート、ツールの使用と習得の容易さなど、いくつかのパラメーターを確認する必要があります。これらのパラメータを渡す継続的統合ツールは、優れた選択肢となるでしょう。
まだ疑問がある場合は、Jenkins と TeamCity の無料バージョンを試してみてください。これらのプラットフォームでいくつかのビルドを作成すると、プロジェクトの継続的統合にどのツールが適しているかをより簡単に判断できるようになります。