こんにちは、sugitaniと申します。
最近JenkinsからBambooに乗り換えてみたところ、大変便利だったので良さを列挙してみます。
デプロイ独立が良い
Bambooの特徴として、ビルドとデプロイが分かれています。
"ビルド"は普通のCI機能です。配布パッケージを作って保存しておいたり、テスト回したり、いろいろ定期実行したり、といったことができます。"デプロイ"とはどの環境に、どのビルド結果を何を入れるか、に特化した画面です。
指定環境をmasterブランチにしたり、開発中のブランチにしたり、一つ前のビルドに戻したり等、様々なビルド結果をボタンぽちぽちするだけでデプロイすることが出来ます。
GANMA!ではVagrant制御のVMでの開発を基本とするも、デモ用環境や編集業務用、リリース前のテスト用等、いろいろあって大変でしたが、ここらの切り換え作業がずいぶんと楽になりました。
環境別にどのビルドが入っているのかが一覧されるので「あれ?この環境更新してないんだっけ?」が無くなる効果もありました。
リリースノートもコミットログから自動で作ってくれるので、内容確認も楽です
権限管理がとっても良い
Jenkinsは権限管理が大ざっぱで、まともに動かそうとするとAdminを渡さないとやってられない感じでしたが、Bambooは流石のAtlassian社なので、権限管理が非常に充実しています。
ビルドやデプロイの閲覧・実行・編集権限を個人・グループ単位が指定できる、という基本的なことはもちろん、権限を渡したプロジェクト内であれば、その中で自由に設定できます。
静的ページなど、チェックが甘くてよいものはデザイナーさんでもマウスぽちぽちするだけでデプロイできるようにしたりする、などが楽にできます。
最も大きいのは秘密鍵を隠せる、といったところでしょうか?
Jenkinsでsshアクセスを取り扱おうと秘密鍵を登録すると、Admin権限持ちはJenkins設定ページから全部の秘密鍵を見ることができるようになります。かといってAdmin無しでJenkinsを設定してくれ、というのもなかなかつらさがあるので、Jenkinsでちゃんとやるのであればプロジェクト毎に専用のJenkinsを立てないと厳しい、という印象です。(設定追い込めば、ちゃんとやれるのかもですが)
Bambooであれば全社サービスとしてCIを提供することが苦労少なめでできます。
Stash連携
弊社ではコード管理にAtlassianによるGitHubもどきのStashを利用しています。BambooとStashの連携は流石によく練られていて
- 全ブランチ or 指定ブランチを即時に自動ビルド・テスト。
- ビルドが転けたらStash側にも警告表示・テストが通らないとマージ拒否も設定可能
といったことが小細工無しできます。Webhooks設定が自動になった感じでしょうか?
頑張らなくても良いので助かります。
だめぽ
もちろん駄目な点あります。有料です。
エージェント単位でお金がかかるのですが、1プロジェクト1エージェントは最低必要で、混み合ってくると2~3は繋いで並列化したくなります。とはいえ、費用対効果から考えるとお安いといえるでしょう。
他にはGitHubと組み合わせるなら、他にもっと楽なのがあるかも?とか(Github側になにか出す以外はちゃんと動きそうな?)プラグインが少なめ、等でしょうか?(プラグインは結構さくっと書けた)
それでも複数プロジェクトをお持ちの組織で、CI周りでお困りでしたらとてもオススメです。
みなさまも、是非お試しください。