今回の記事は Bamboo に関する、2012 年 1 月 8 日に発表された James Dumay 氏のブログ投稿「Continuous Delivery with Bamboo Stages」の弊社日本語訳です。原文はこちらでご確認いただけます。
Bamboo の最大の強みは、開発者がテスティングから生産に至るまでワークフロー全体を制御できる点です。Bamboo では、ソフトウェアのリリースや展開などの難しいタスクを ‘継続的デリバリー’ というプラクティスを使用して簡単に自動化できます。
継続的デリバリー
継続的デリバリーは、コード作成から展開までのすべての手順を完全に自動化するためのプロセスです。継続的デリバリー以前、ソフトウェアのリリースは不定期かつ手動によるプロセスで、エラーを起こしやすいものでした。それが、手順を自動化して時間短縮を図ることでチームはプロジェクトの重要な成果物に注力でき、ソフトウェアの出荷に伴う退屈な繰り返しのタスクを防ぐことができます。
ステージとは
ステージとはビルド内の個々の連続した手順です。ステージを使用するとビルドの自動化をコンパイル、テスト、および展開などの複数の手順に分割できます。ステージを実行すると、ステージに属するすべてのジョブはビルドを開始し、ビルドを並列処理して実行時間を大幅に減らします。Bamboo のジョブはビルドの動作を定義する一連のタスクを実行します。タスクはスクリプトや Maven の目標を実行したり、Visual Studio のプロジェクトをビルドできます。
ジョブはテスト スイートを小さいバッチに分割するために使用でき、各ジョブは個々のバッチを並行して実行します。統合テストを分割することで何時間も容易に節約できます。以下のステージのジョブは、前のステージのすべてのジョブが正常に完了するまで実行を開始しません。この機能により、負荷の高い統合テストは負荷の低いユニット テストをパスした後にのみ実行されるようになります。例を以下に示します。
位置について、用意、出荷!
上の画像では、ビルド、テスト、展開という 3 つのステージを定義しました。開発者がソース コードを保持する Git レポジトリにコミットすると、ビルド ステージとその単一のコンパイル ジョブが実行されます。
プロジェクトが正しくコンパイルされると、ビルドはテスト ステージに移行します。ここでは 1 つのコンピューターで 1 つのジョブのテストすべてを実行する代わりに、テストを複数のジョブに細分化します。Bamboo がテスト ステージの実行を開始すると、ステージ内のジョブがすべて一度にキューに登録されます。十分な空きリモート エージェントがある場合は、各ジョブは同時に並行して実行されます。今回の例では、このステージの実行にかかる時間は約 20 分です。ちなみに、全テストを 1 つのジョブにまとめると 1 時間はかかります。ジョブの並行処理はフィードバックをすぐに得るための非常に簡単かつすばやい方法です。
コミットのたびに Web サイトにリリースをアップロードしたくないため、弊社では展開ステージを手動で行うように設定しました。Bamboo が手動ステージに到達すると、実行が停止し、ビルドを再開するために手動のトリガーを待ちます。今回の例では、展開ステージに達するとビルドが停止し、リリースするときに誰かが続行ボタンを押してビルドを続行する必要があります。
上の画像ではプロジェクトの最近 10 件のビルドの履歴が表示され、そのうち 8 件だけがリリース候補です。チームは変更をコミットし続けて Bamboo にテストを実行させます。スタートレックのピカード艦長ばりに「ではそうしてくれ」と言う段階で Bamboo は既に実稼働用のリリース準備を整えています。
次に行うこと
- Bamboo をインストールして最初のプランを作成してみましょう。作業を始めるのは非常に簡単で、やり方を紹介した手順動画を用意してあります。
- 手動ステージで継続的デリバリー ワークフローを作成するために、ステージを作成して設定する方法を見てみましょう。
- Bamboo の成果物共有機能を使用してテストや開発に必要な Web apps、実行可能ファイル、およびリソースなどのファイルをステージ間で渡してみましょう。
- 今回の例のようにフィードバックをすばやく得たいですか? Bamboo リモート エージェントをインストールしてサーバー容量を増やしてジョブをビルドしてみましょう。
- 質問がある場合は、Atlassian 独自の Q&A サイトである Atlassian Answers で弊社スタッフがお手伝いします。







