ソフトウェアエンジニア現役続行

雑多なことを綴ります

私の思う Bamboo の良いところ

Bamoo はブランチによる開発を協力にサポート

Git の登場により、機能ブランチ(フィーチャーブランチ)や git-flow といった開発のワークフローが提唱されています。典型的なワークフローは以下のような形でしょうか。

  1. 機能ブランチを作成してそこで開発
  2. 開発が終わったら CI ツールで結合テストをして、ブランチ元へプルリクエスト
  3. (メンバーのレビューを経て)ブランチ元へマージ
  4. 開発者用サンドボックスや QA サーバーへデプロイしてエージング
  5. しかるべきタイミングで本番環境へリリース

アトラシアン社が提供する CI(継続的インテグレーション)・CD(継続的デリバリー)ツールである Bamboo を使うと、開発者は上記のプロセスの中で開発作業に集中でき、それ以外の大部分を自動化することができます。UI は英語ですが、無料お試しの30日間でいろいろ試すことができると思います。私の感じた Bamboo の特長は以下です:

  • 自動ブランチ検知
  • 安全で簡単なデプロイ
  • メンバーへのタイムリーな通知
  • 他のアトラシアンツールとのコラボレーション

 特長1: 自動ブランチ検知

ソースコードリポジトリとして Git や Mercurial のサーバーを使っている場合、Bamboo はリポジトリ上でブランチが作成されたことを自動的に検知して、そのブランチ用のプランを自動的に作成してくれます。GitHub, Bitbucket, Stash はもちろん、Git, Mercurialリポジトリサーバーなら何でも連携できます。

そのため開発者が 1) リポジトリでブランチを作成し、2) コーディングを終えて、3) そのリポジトリにコミットするだけで、Bamboo が自動的にブランチの作成とコミットを検知して、ビルドやテストを行ってくれます。私の知るかぎり、自動ブランチ検知を提供している CI ツールは他に見当たりません。

f:id:Oswald:20140509120525j:plain

なお Git や Mercurial ではなくて Subversion など他のリポジトリサーバーを使っている場合、自動ブランチ検知はできませんが、Bamboo 上で手動でブランチ用のプランを作ることで、同じようにブランチのソースコードのビルドやテストを行うことが可能です。

特長2: 安全で簡単なデプロイ

デプロイで私が気に入っている Bamboo の機能は以下です:

  1. master にコミットされたソースがビルドに成功したら、開発者用サンドボックスや QA サーバーに自動デプロイしてほしい(本番環境には自動デプロイしてほしくない)
  2. リリース物を間違えることなく確実に本番環境にデプロイしたい

特に2つ目はリリースオペレーターの人にはとてもうれしい機能なのではないでしょうか。どんなにしっかりテストをしてきたものでも、本番リリースにはある程度のプレッシャーを感じます。また、リリース物を間違えてしまうような失敗も絶対に避けたいです。Bamboo はテストでビルドしたものや QA サーバーにデプロイしたものと同一のものを本番環境へリリースすることができます。

f:id:Oswald:20140509104228j:plain

f:id:Oswald:20140509104235j:plain

特長3: メンバーへのタイムリーな通知

他の CI ツール同様、Bamboo もビルドの結果やデプロイの開始/終了を通知する機能があります。Eメール、アトラシアン製品である HipChat のほか、XMPP プロトコルをサポートするIMアプリへ通知が可能です。これによって、メンバー全員がビルドやデプロイの状況をリアルタイムに知ることができます。

特長4: 他のアトラシアンツールとのコラボレーション 

これがアトラシアン製品の肝だと思いますが、JIRA や Stash など他のアトラシアン製品を使っていれば、Bamboo におけるビルドやデプロイの状況をこれらのツールから知ることができます:

  • Stash でブランチを切るときに、ブランチ元がビルドをパスしていることが分かる
  • Stash でプルリクエストのレビューをする際に、ビルドをパスしているかがで分かる
  • JIRA 上で、その機能のビルドやデプロイの状況が一目で分かる

プロジェクト進捗会議のたびに開発者、テスター、リリースオペレーターなど各担当者に状況を聞いて回ってエクセルにまとめる、なんて苦い経験をさせられることはもうありません。

f:id:Oswald:20140509121137j:plain

f:id:Oswald:20140509120326j:plain

f:id:Oswald:20140509120335j:plain