前編では継続的インテグレーション(CI)システムであるBambooを紹介しました。後編では、なぜJIRA(課題管理システム)やBitbucket(バージョン管理システム)との連携をお勧めしたいのかを解説します。
簡単に情報を共有できる
ビルドやテストといった作業の自動化や、デプロイの省力化をCIシステムで実現できるようになるだけでも大きなメリットですが、自動化したビルド/テスト/デプロイに関する情報は素早く、適切な形で共有することで真価を発揮します。
Webブラウザを使ってBambooにアクセスすることで情報確認はできますが、「変更を加えたソースコードでビルドが成功したのかどうか」「分岐元のブランチはビルドに成功している安全なブランチなのか」「機能追加したプログラムはどの環境にデプロイ済みなのか」といった情報を見るために、毎回Bambooの画面を見なければならないとなると、開発者やマネージャーにとっては小さな手間が積み重なってしまいます。CIシステムによってもたらされる情報は、普段のルーチンの中で確認できるのが理想的です。
そこで、課題管理システムやバージョン管理システムとCIシステムを連携させ、Bambooにアクセスすることなく情報を確認できるようにしてみましょう。
JIRAで状態を確認
JIRAだけでも進捗管理はできますが、「各課題で対応した内容が問題なくビルドに成功しているのか」「ステージング環境や本番環境にデプロイが行われているのか」といった詳細まではわからず、これらを把握するにはBambooの画面を見たり、各担当者に状況を聞いて回ったりする必要があります。プロジェクトに関わる人員が増えれば増えるほど骨が折れそうですが、JIRAをBambooと連携させることでこの問題は解決します。
前回の記事の中で、ソースコードを保存したときのコミットログ内に、JIRAの課題キー(JIRAが課題をひとつひとつ識別するための番号)を含めることで、JIRAの課題とコミット内容がリンクされ、JIRAとBitbucketのどちらからも相互に情報を参照できることを紹介しました。Bambooも同様に、ビルドの対象となっているコミットのコミットログにJIRAの課題キーが存在していれば自動でJIRAの課題とリンクされ、JIRAとBambooで相互に情報を参照できるようになります。
JIRAの課題の詳細情報を表示する画面には「開発パネル」と呼ばれる領域があり、Bambooで実行されたビルドやデプロイの情報が一目でわかるように表示されます(図1)。
また、表示されたリンクをクリックすることで、ビルド情報であれば「実施したテストの件数やそのテストにかかった時間」「ビルドの成果物へのリンク」など(図2)、デプロイ情報であれば各デプロイ対象環境について「デプロイが実施済みかどうか」「最後にデプロイを行った日付」など、より詳細な情報も確認できます。
Bitbucketで事故防止
バージョン管理システムは開発現場になくてはならないものですが、単体では管理されているソースコードの品質が十分であるかどうかは簡単には判断できません。コードレビューを実施していても知らない間に不具合が混入したり、そもそも不具合が混入している状態を起点にして開発を進めてしまう恐れもあります。このような事故が起こると不具合への対応が遅れたり、開発作業自体が非効率になったりして、せっかくCIを開発に取り入れてもそのメリットが失われてしまいます。
そこで、バージョン管理システムをCIシステムと連携させ、よりパワーアップさせましょう。Bitbucketは、Bambooと連携させることで、ビルドが成功しているブランチかどうかをさまざまな画面に視覚的に表示する機能が使用でき、不具合混入の事故を未然に防ぎやすくなります。
たとえば、プルリクエストによりコードレビューを実施する際、レビュー画面内にビルドの結果が表示されます(図3)。ビルドに失敗するソースコードであることがレビューを実施する時点で確認できれば、即座にマージを却下できるので、不具合の混入を効率的に防ぐことができます。また、Bitbucketではマージの条件として「ビルドに成功していること」という指定も可能なので、システム的にマージを許可しないことができます。
ほかにも、ある特定のブランチから分岐させて開発用のブランチを作成する際に、分岐元のブランチがビルドに成功している安全なブランチなのか、それともビルドに失敗している危ないブランチなのかを確認できます(図4)。ビルドに成功している安全なブランチであることを前提に開発作業を開始できるので、開発を進めていく中でビルドの失敗が発生すれば、自身の開発作業が原因であることがすぐにわかります。
連携は簡単
Bamboo/JIRA/BitbucketはすべてAtlassian社の製品なだけあって、システム連携は簡単です。もしそれぞれ単体で利用されている方がいればぜひ連携させてください。各システムのURLを入力してアプリケーションリンクを作成するだけで連携機能を使う準備が整います(図5)。
最後に
CIシステム導入による単純作業の自動化/省力化は、昨今求められる生産性の向上には欠かせません。しかし、CIシステムを単体でしか利用していないのでは、いまひとつ「痒い所」に手が届かないと感じる場面があるのも事実です。Bambooを提供しているAtlassian社の製品はシステム間の連携が強みであり、そういった「痒い所」に手が届くのが特徴ですので、この機会にぜひお試しください。
Bambooの機能のより詳細な紹介は、下記過去記事Webサイトの>第9回/第10回にありますので、そちらもご覧いただければと思います。
日本だけでなく、アジア圏でもアトラシアン製品販売のトップエキスパートであるリックソフトのWebサイトでは、各アトラシアン製品の体験版を提供しているほか、アトラシアン製品専用のコミュニティも運営しています。まずはアクセスしてみては!
- リックソフトJIRAデモ環境
- https://www.ricksoft.jp/demo/
- 第1特集
MySQL アプリ開発者の必修5科目
不意なトラブルに困らないためのRDB基礎知識
- 第2特集
「知りたい」「使いたい」「発信したい」をかなえる
OSSソースコードリーディングのススメ
- 特別企画
企業のシステムを支えるOSとエコシステムの全貌
[特別企画]Red Hat Enterprise Linux 9最新ガイド
- 短期連載
今さら聞けないSSH
[前編]リモートログインとコマンドの実行
- 短期連載
MySQLで学ぶ文字コード
[最終回]文字コードのハマりどころTips集
- 短期連載
新生「Ansible」徹底解説
[4]Playbookの実行環境(基礎編)