Bamboo CI サーバの概要
Bamboo は継続的インテグレーション (CI) サーバーであり、ソフトウェア アプリのリリース管理を自動化して、継続的なデリバリー パイプラインを構築するために使用されます。
これが意味すること
CI とは、コードがリポジトリにコミットされるたびに、ビルド、ユニット テスト、統合テストを実行、またはトリガーして、新しい変更が既存のコード ベースにうまく統合されることを確認するソフトウェア開発方法です。統合ビルドは、新しい変更の質について、早い段階で「フェイル ファスト」のフィードバックを提供します。
リリース管理とは、ソフトウェア アプリのリリースに向けて一般的に実行されるステップのことです。これには、ビルドと機能のテスト、リリースのタグ付け、バージョンの割り当て、本番環境での新しいバージョンのデプロイと有効化が含まれます。
On this page:
Bamboo でどんな問題を解決できますか?
個人開発者の場合、Bamboo を使用すると次のような利点があります。
- 自動化された、信頼性の高いビルドとテストのプロセスで、より多くのコーディングを自由に行えます。
- 異なる要件やターゲットを持つビルドを管理する方法が提供されます。
- App Store や Google Play などのサーバーに自動でデプロイします。
チームで Bamboo を使用する場合は、上記の利点に加えて、次のような利点があります。
- ビルドとテストのプロセスが、特定のローカル環境に依存しません。
- 開発者がコードをコミットすると、ただちにビルドと統合のテストが自動でトリガーされます (継続的インテグレーション)。
大規模で複雑なアプリを取り扱う際に Bamboo を使用すると、上記のすべての利点に加えて、次のような利点があります。
- 並列処理によってビルドのパフォーマンスを最適化できます。
- エラスティック リソースを活用できます。
- 継続的なデプロイを実行できます (例えばユーザー承認テスト (UAT) など)。
- リリース管理を実装できます。
Bamboo はどのように機能しますか?
- Bamboo は、すべての作業をスケジュールして調整する中央管理サーバーです。
Bamboo 自体に、さまざまなタイプの作業のためのインターフェイスとプラグインが用意されています。
まず、Bamboo はソース リポジトリからソースを取得します (ここではさまざまなシステム用プラグインが多数用意されています)。
- その後、Bamboo がビルドを開始します。これは、MSBuild などを呼び出して Visual Studio ソリューションをビルドするか、Maven でコンパイラーとリンカーなど、ユーザーが利用しているものを呼び出して実行されます。
- ソリューションやプロジェクトがビルドされると、「アーティファクト」(実行可能なアプリ、設定ファイルなどのビルド結果) ができます。
- ビルド アーティファクトでは、次のようなことも実行できます。
- ZIP ファイルに圧縮して、どこかにコピーする。
- インストール ビルダーを実行して、MSI を作成する。
- テスト サーバーにインストールして、すべてが正常にインストールされたことを確認する。
- Bamboo は、ビルドの設定やステータスの報告のための Web フロントエンドを提供します。
Bamboo には何が必要ですか?
Bamboo は、アプリの構築やテストに関連する作業をスケジュールして、調整します。したがって、Bamboo を使用するには、次がセットアップ済みである必要があります。
- プロジェクトの完全なソース コードを含むコード リポジトリ
- ビルド スクリプト
- テスト スイート
一般的に、コードに変更をコミットしたユーザーが、その結果生じたビルド エラーをただちに修正する責任を持つと考えられます。
Bamboo のワークフローはどのように整理されますか?
Bamboo は、「ジョブ」と「タスク」を含む「プラン」という概念によって、ワークフロー内のアクションを設定/順序付けします。
プロジェクト
- Has none, one, or more, plans.
- プロジェクト内のすべての計画にわたるレポートを提供します (例えば、ウォールボードを使用します)。
- 他のアプリへのリンクを提供します。
- Allows setting up permissions for all the plans it contains
Plan
- 初期設定ではステージが 1 つありますが、ジョブを複数のステージにグループ化するために使用できます。
- 同じリポジトリを使用して順番に実行される一連の 1 つ以上のステージを処理します。
- 既定のリポジトリを指定します。
- ビルドがトリガーされる仕組みと、計画とプロジェクト内の他の計画との間のトリガー依存関係を指定します。
- ビルド結果の通知を指定します。
- 計画とそのジョブを表示および設定する権限を持つユーザーを指定します。
- プラン変数の定義を提供します。
段階
- By default has a single job but can be used to group multiple jobs.
- ジョブを並行して複数のエージェント (ある場合) 上で処理します。
- Must successfully complete all its jobs before the next stage in the plan can be processed.
- 後続のステージで使用できるアーティファクトが生成されることがあります。
ジョブ
- 一連の1つ以上のタスク(順番に同じエージェント上で実行される)を処理します。
- タスクが実行される順番を制御します。
- Collects the requirements of individual tasks in the job, so that these requirements can be matched with agent capabilities.
- ビルドによって生成されるアーティファクトを定義します。
- 前のステージで生成されたアーティファクトのみを使用することができます。
- 任意のラベルを指定します。これによって、ビルド結果またはビルド アーティストがトリガされます。
タスク
- ソース コードのチェックアウト、Maven 目標の実行、スクリプトの実行、またはテスト結果の解析など、作業の小さな個別の単位です。
- Bamboo 作業ディレクトリでジョブ内で順番に実行されます。