Commit Policy Plugin で JIRA Software と Bitbucket Server との連携を強化

2016-03-09 (Wed)  •  By 伊藤  •  活用のヒント  •  Bitbucket Commit Policy JIRA

はじめに

JIRA Software と Bitbucket Server とを連携させるメリットの 1 つとして、スマート コミット機能があげられます。スマート コミットとは、コミット メッセージに特定の文字列を含めることで、さまざまな操作を行える機能です。このスマート コミットを利用することで、JIRA 課題に対してコメントの作成、作業時間の記録、ステータスの変更などを行えます。ソース コードの修正を JIRA で管理している場合、スマート コミットを活用することでトレーサビリティの向上を図ることが可能です。

スマート コミットの問題点は、コミット メッセージの内容確認がコミッター自身に委ねられていることです。したがって、コミット メッセージに含めるべき情報をうっかり入力し忘れることも考えられます。この問題を解決するのが、今回紹介する Commit Policy Plugin for JIRA です。

Commit Policy Plugin for JIRA の概要

Commit Policy Plugin for JIRA は、ハンガリーのアトラシアン エキスパート Midori Global Consulting が開発販売するアドオン製品です。このアドオンは、JIRA 上で定義されたコミット ポリシーを基に、バージョン管理システム (VCS) 上でコミット メッセージの内容を自動検証します。

例えば JIRA Software と Bitbucket Server との連携を考えた場合、一連の処理は以下のとおりとなります。

  1. 管理者は JIRA Software 上でコミット ポリシーを定義する
  2. 管理者は Bitbucket Server が管理する Git リポジトリに対してコミット ポリシーを割り当てる
  3. コミッターは修正したファイルを Git リポジトリにプッシュする (プッシュ イベント発生)
  4. Bitbucket Server 上でコミット ポリシーがフック スクリプトとして自動実行される
    • コミット メッセージの内容が要件を満たしている場合は、そのファイルは Git リポジトリに格納される (プッシュ成功)
    • コミット メッセージの内容が要件を満たしていない場合は、エラー メッセージが表示される (プッシュ失敗)
  5. エラー メッセージが表示された場合、コミッターはコミット メッセージを修正して再度プッシュする

コミット ポリシーの定義は、条件を指定することで行います。以下はその条件の一例です。

  • コミットできるコミッターを特定のグループ メンバーに制限する
  • コミット メッセージの文字数を指定する
  • 現在のスプリントに含まれる未解決課題に関連するコミットのみを受け付ける
  • 特定のディレクトリ上のファイルはコミットできないようにする
  • その他

条件を指定には、正規表現、Glob パターン、JQL などを利用します。さらに AND 論理演算子や OR 論理演算子で複数の条件を組み合わせることも可能です。

もちろん、Commit Policy Plugin for JIRA は Bitbucket Server 以外のバージョン管理システム (VCS) にも対応しています。現時点での一覧は、以下のとおりです。ただし、すべてオンプレミス版にのみ対応しています。

  • Git
  • Bitbucket Server
  • Mercurial
  • Subversion
  • Perforce
  • Team Foundation Server
  • ClearCase
  • CVS

通常、フック スクリプトはバージョン管理システムの種類に依存しますが、Commit Policy Plugin for JIRA ではその差異を意識する必要はありません。同じコミット ポリシーを異なるバージョン管理システムに適用することができます。

コミット ポリシーの定義例

今回は、以下の 2 条件を同時に満たすコミット メッセージのみを受け付けるコミット ポリシーを考えてみましょう。

  • 条件 1 : コミット メッセージを JIRA 課題のコメントにも反映させる。
  • 条件 2 : 指定可能な JIRA 課題番号は、以下のすべてを満たすもののみ。
    • プロジェクト キー : MJSP
    • 課題タイプ : タスク
    • ステータス : In Progress

条件 1 の指定

コミット メッセージを JIRA 課題にコメントとして反映させるためには、スマート コミットの #comment コマンドを使用します。また、指定する JIRA 課題の課題番号は MJSP-(数字) の形式なので、コミット メッセージは以下の書式になります。

MJSP-(数字) #comment (テキスト メッセージ)

Commit Policy Plugin for JIRA の条件オプション “Commit message must match a pattern (コミット メッセージはパターンに必ず一致)” を選択することで、コミット メッセージが上記書式であることを強制できます。また、上記書式を正規表現に直すと以下になりますが、これをオプション フィールドに入力します。

(?:MJSP)-\d+.* (?:#comment).*

条件 2 の指定

Commit Policy Plugin for JIRA の条件オプションには、”Commit message must contain issue keys from a JQL query (コミット メッセージは JQL クエリの実行結果に含まれる課題キーを必ず含む)” が用意されています。コミット メッセージに含まれる JIRA 課題が以下の検索結果に含まれない場合は、エラーを返すようにします。

project = MJSP AND issuetype = タスク AND status = "In Progress"

上記 JQL (JIRA クエリ言語) をオプション フィールドに入力します。

条件 1 と条件 2 の両方を強制するように指定

最後に条件 1 と条件 2 のいずれも必須になるように設定します。これは、”The commit must satisfy…” オプションで all を選択するだけです。

The commit must satisfy all of these conditions:

備考

Commit Policy Plugin for JIRA 標準の条件オプションは、以下のとおりです。

  • Committer must have a valid JIRA account (コミッターは有効な JIRA アカウントが必要)
  • Committer attribute must match a pattern (コミッター属性はパターンに必ず一致)
  • Commit message must match a pattern (コミット メッセージはパターンに必ず一致)
  • Commit message must contain issue keys from a JQL query (コミット メッセージは JQL クエリの実行結果に含まれる課題キーを必ず含む)
  • Changed files must match a pattern (コミットされるファイルはパターンに必ず一致)
  • カスタム条件 (Groovy で記述)

これらを組み合わせて使用することで、かなり柔軟な条件の指定ができることがお分かりいただけると思います。

まとめ

今回は JIRA Software と Bitbucket Server との連携におけるスマート コミットを取り扱いましたが、Midori Global Consulting の Commit Policy Plugin for JIRA は、それ以外のバージョン管理システムを連携している場合でも強力な助っ人となります。コミット メッセージの内容を自動で検証してくれるため、コミッターによるケアレス ミスを減らすことができます。また、コミット メッセージの書式を統一できるのでソース コードのトレーサビリティの向上に結びつきます。コミッターの制限や、コミットできるファイルの制限も指定できるので、セキュリティの強化にも繋がります。ぜひ、一度お試しください。


Related Articles

お気軽にお問い合わせください

お問い合わせ