BambooとJenkinsは、継続的インテグレーションをサポートするプラグインを備えた、人気の自動化サーバーです。両者には共通する機能もいくつかありますが、違いも十分にあるため、DevOpsチームは自分たちのユースケースに最適なツールを容易に判断できます。本記事では2つのツールを比較し、違いを明確にするとともに、十分な情報に基づいて判断できるよう支援します。
Bambooとは?

Bamboo Serverは、Atlassianが提供する人気の商用継続的インテグレーションツールで、ユーザーは自動化されたビルド、テスト、リリースを1つのワークフローで実行できます。使いやすいグラフィカルユーザーインターフェース、強力なビルドエージェント管理、自動マージ、組み込みのデプロイメントサポートを備えた柔軟なツールです。ここでは、Bambooの主な機能を紹介します。
Bitbucket ServerとJiraソフトウェアの組み込み連携
Bambooの強力な機能の1つが、人気の課題追跡ソフトウェアJiraとの組み込み連携です。これによりビルドとデプロイメントの情報を確認でき、リリースの実施状況、品質、ステータスを完全に可視化できます。Bitbucket Serverとの連携は、チームにとっていくつかのメリットがあります。Bitbucket ServerはBambooにビルドのタイミングや、リポジトリーブランチの変更を反映するようプランブランチを更新するタイミングを通知します。また、関連するBambooビルドにBitbucket Serverのコミットも表示します。
Gitブランチワークフローの組み込み
Bambooは、Gitブランチのマージプロセスを効率化する自動マージをサポートしています。Bambooでは、組み込みのGitブランチ機能とワークフローにより、新しいブランチを自動的に検出、テスト、作成し、テストに成功した場合はブランチ同士をマージできます。また、ブランチ名を使って、ステージングサーバーや本番サーバーへコードを継続的にデプロイすることも可能です。
テストの自動化
Bambooはテストとビルドを自動的に実行するだけでなく、テスト結果に基づいて情報に基づく判断をワークフローが自動的に下せるようにします。テストを自動化することで、ビルドとデプロイメントの勢いをさらに高めることもできます。
並列実行のサポート
Bambooはジョブの並列実行をサポートしており、実行時間を短縮しながら、より多くのタスクをカバーできます。これにより、多数のプラットフォームでビルド、テスト、デプロイメントをより迅速に進められます。
組み込みのデプロイメントサポート
組み込みのデプロイメントサポートにより、Bambooはビルドをテスト環境へ継続的に自動送信できます。また、準備が整ったビルドをユーザーにリリースすることも可能です。
料金
Bambooの料金体系は、ユーザー数ではなくエージェント数に基づいています。エージェント数が増えるほど、同時に実行できるプロセスが増えるためです。リモートエージェント1台のサブスクリプション料金は、年間1,200米ドルです。リモートエージェントは最大2,000台まで利用できます。Bambooには30日間の無料トライアルがあります。
Jenkinsとは?

Jenkinsは、プロジェクトのビルド、デプロイメント、自動化をサポートする数百種類のプラグインを備えた、人気のオープンソース自動化サーバーです。最も広く利用されている継続的インテグレーションおよび継続的デリバリー(CI/CD)ツールの1つです。オープンソースであること、強力なコミュニティーサポート、無制限の連携機会によって他のツールと差別化されています。以下では、Jenkinsの特徴を詳しく説明します。
Jenkins Pipeline
Jenkins Pipelineは、継続的デリバリーパイプラインをJenkinsに実装・統合するためのプラグイン群です。Jenkins Pipelineは、継続的インテグレーションから包括的な継続的デリバリーパイプラインまで、さまざまなユースケースに対応する強力な自動化ツール一式を追加します。
拡張性
Jenkinsは、拡張性のためにRESTful APIを提供しています。これらのAPIを利用して、新しいビルドのトリガー、ジョブの作成、使用状況に関する情報の取得などを実行できます。Jenkinsは、Python、JSON、XML向けのリモートアクセスAPIを提供しています。
シンプルな設定
Jenkinsは、Webインターフェースを使ってセットアップや設定を行えます。組み込みのヘルプと、操作中に実行されるエラーチェックにより、Jenkinsのセットアップと設定は簡単です。すぐに実行できるJavaプログラムであることも、そのシンプルさを支えています。対象のマシンにJavaがインストールされていれば、インストールは簡単です。
プラグイン
Jenkinsには数百種類のプラグインが用意されているため、継続的インテグレーションおよび継続的デリバリーのツールチェーンにおいて、無制限の連携機会があります。JenkinsはJavaで記述されているため、プラグインによってさまざまな言語で書かれたプロジェクトにもJenkinsを拡張して利用できます。これらのプラグインにより、Jenkins環境の機能をユーザー固有のニーズに合わせて強化できます。
分散型アーキテクチャ
Jenkinsでは、複数のマシンに作業を簡単に分散できます。これにより、異なるプラットフォームでテスト、ビルド、デプロイメントをより迅速に進められます。
継続的インテグレーションと継続的デリバリー
Jenkinsは拡張可能な自動化サーバーであるため、基本的な継続的インテグレーションサーバーとして利用することも、プロジェクト向けの継続的デリバリーハブとして設定することもできます。
料金
Jenkinsはオープンソースツールのため無料で利用でき、コードはGitHubでホスティングされています。
BambooとJenkinsの比較
| 項目 | Bamboo | Jenkins |
|---|---|---|
| ライセンス条件 | 商用 | オープンソース |
| ホスティング | オンプレミス | セルフホスト/オンプレミス |
| プラグインエコシステム | 約200種類のプラグイン | 1,800種類以上のプラグイン |
| 開発言語 | Java | Java |
| REST API | ✅ | ✅ |
| 並列処理 | ✅(一部) | ✅ |
| Gitブランチワークフローの組み込み | ✅ | ❌ |
| Jiraソフトウェアとの組み込み連携 | ✅ | ❌ |
商用とオープンソースの違い
オープンソースであるJenkinsは無料で利用できます。そのため、テストやビルドのプロセスを迅速化したいチームにとって魅力的です。こうしたチームには、立ち上げ初期のスタートアップなどが含まれます。
Bambooは30日間の無料トライアルを提供する商用製品であり、あらゆる規模のチームに対応しています。料金はチームの規模、ジョブ数、エージェント数によって決まります。
ホスティング
BambooとJenkinsを分ける要素の1つは、CI/CDツールのホスティング場所です。Bambooはオンプレミス版のみ利用できます。クラウド版は2017年に終了しました。
Jenkinsにはオンプレミス版とクラウド版の両方があります。セルフホスト型パイプラインのクラウドインストールに適しています。Jenkinsのオンプレミス版は、DevOpsテストに利用してスケールに対応するアーキテクチャを構築できます。クラウドCI/CDツールという点では、Jenkinsのほうが有利です。
並列処理
BambooとJenkinsは、どちらも並列ビルドをサポートしています。ただしBambooの並列処理では、デフォルトで各ステージに1つのジョブが割り当てられ、複数のジョブをまとめることもできます。Bambooでジョブを並列処理するには、少なくとも1つのエージェントが必要です。前のステージのすべてのジョブが完了して初めて次のステージに進むため、ステージは順番に実行されます。
一方、Jenkinsの並列処理は、柔軟なジョブ実行を可能にするパイプラインを重視しています。任意の言語でテストを並列実行するよう設定できます。また、Jenkinsの並列処理では、Jenkinsビルドをパラメーター化ビルドとして設定することも可能です。ただし、ビルドが同じ環境を共有するため、DevOpsテストにおけるJenkinsは部分的な並列処理しかサポートしていません。
人気
Google TrendsでJenkinsとBambooを比較すると、Bambooに比べてJenkinsのほうが長期的にはるかに高い関心を集めていることがわかります。JenkinsはBambooよりもずっと長く利用されており、これが人気に影響している要因の1つと考えられます。
プラグインのサポート
Jenkinsはオープンソースであるため、プラグインエコシステムの点で優位に立っています。世界中の大規模なコミュニティーが、新しいプラグインの作成に大きく貢献しています。現在、Jenkinsコミュニティーが提供する1,800種類以上のプラグインが、プロジェクトのビルド、デプロイ、DevOpsテスト、自動化をサポートしています。
Atlassian Marketplaceでは、Bambooが約200種類のプラグイン/アドオンを提供しており、プレミアムアプリと無料アプリが混在しています。Jenkinsのプラグイン数は圧倒的に多いため、プラグインサポートを重視するなら、BambooよりJenkinsが有力な選択肢です。
サポートエコシステム
Jenkinsはオープンソースプロジェクトであるため、コミュニティーの関与はBambooよりも強いと言えます。コミュニティーの規模が大きいため、Jenkinsのプラグイン数はほとんどのCI/CDツールを上回ります。さらに、Jenkinsユーザーはコミュニティーの積極的な関与により、充実したドキュメントやトラブルシューティングを利用できます。Jenkinsにはコミュニティーブログもあり、Jenkinsに関する最新情報をコミュニティーに提供しています。
一方、BambooのサポートフォーラムはAtlassianコミュニティーの一部であり、Bambooに関するブログ記事は公式Atlassianブログに掲載されています。コミュニティーサポートでは、Jenkinsが両者の中で優れています。ただし、Atlassianエコシステムの一部であるため、他のAtlassian製品を利用している開発者にとってはBambooのほうが魅力的かもしれません。
ユーザーエクスペリエンス
Bambooは、Jenkinsよりもユーザーフレンドリーで、優れたユーザーエクスペリエンスを提供します。よりすっきりして直感的であり、タスクのビルドやデプロイメントの状態をユーザーに案内します。Jenkinsは機能性を優先する代わりに、ユーザーエクスペリエンスを犠牲にしています。
プラットフォームの選択:BambooとJenkins
最適なCI/CDツールは、予算、求める機能、そしてツールに期待するユーザーエクスペリエンスによって異なります。この場合、Jenkinsは無料で、より優れた機能を提供します。ただし、プラグインのカスタマイズを自分やチームで担う必要があるため、Jenkinsには学習曲線があるかもしれません。
Bambooはより優れたユーザーエクスペリエンスを提供するため、すでにAtlassianエコシステムの他の製品を利用しているなら検討する価値があります。これらの要素に加えて、選択が自分のユースケースに適しているか確認するため、必ずツールを実際に試してみてください。