📘

GitLabとJIRAをGitLab for Jira Cloudで連携して、ステータス移動を自動化させる

2023/09/24に公開

はじめに

前回の記事で GitLab のマージリクエストがマージされたときに、ステータスを指定箇所に移動させる方法を紹介をしました。
これはこれで、便利ですができることが限定的で私が行いたい、ステータスの自動化にはまだ遠い状態でした。
しかし、あれから再度調べてみて試行錯誤した結果、マージされたとき以外でもステータスの移動を自動化させることができました。
なので、今回はステータス移動の自動化についての記事です。
設定自体はコマンドとか必要なく、簡単なものだったので同じような要望を抱えている方は是非とも試してみてください。

GitLab 側の準備

まず GitLab にグループを作成します。
これはGitLab for Jira Cloudが GitLab のグループとしか紐づかないためです。
GitLab のサイドメニューにある Groups を選択し、グループを作成します。
2023-09-23_23h20_00.png
以下のような項目が表示されるので、任意の名前を入力します。
グループの公開設定はどちらに設定しても連携はできるので、private と public 任意のものを選んでください。
2023-09-23_23h21_38.png
グループを作成したら、その中に任意のプロジェクトを作成してください。

JIRA 側の準備

まずGitLab for Jira Cloudの拡張機能を JIRA にインストールしてください。
インストールが完了したら、「Get Started」というボタンが表示されるので、そちらをクリックします。
すると以下のような画面が出てくるので、「Sign in to GitLab」をクリックします。
2023-09-23_23h26_22.png
GitLab との連携を求める下記画面が表示されるので、「Authorize」をクリックします。
2023-09-23_23h32_28.png
すると「No linked groups」という文言がある画面が表示されるので、「links group」ボタンをクリックすると先程作成したグループが表示されるので、そのグループと link させます。
ここまでできたら、JIRA のプロジェクトに戻って任意のイシューを作成してください。
2023-09-23_23h36_49.png
今回は上記イシューを作成しました。
なお、イシューの詳細に、「開発」と「リリース」という項目が表示されていると思います。
2023-09-23_23h37_01.png
これはGitLab for Jira Cloudを導入したため表示されるようになっています。
今回は「開発」の方に関わる機能しか使用しませんが、「リリース」の方も機能がありそうなので、また気分が乗ったときに調査できたらと思います。
後、注意点として上記「開発」と「リリース」が表示されていても GitLab とのリンクが完了していない場合はあります。
なので、あくまで上記が表示されたとしても、インストールが完了したぐらいの認識だと思ったほうが良さそうです。
以上で各環境の下準備が完了しました。
では最後に今回の肝である、自動化を設定します。

JIRA で自動化を設定する

ここからは実際に JIRA の自動化を使って、ステータス移動を行っていきます。
なお、今回設定する自動化は

  1. ブランチが作成されたときにステータスを「進行中」に移動させる。
  2. ブランチがマージリクエストを作成した時に、ステータスを「レビュー中」に移動させる。
  3. マージリクエストがマージされたときにステータスを「完了」に移動させる。

の 3 つです。
また、私の JIRA において設定しているステータスは「BACKLOG」、「進行中」、「レビュー中」、「完了」の 4 つなのでご認識お願いします。
では始めます。

マージリクエストがマージされたときにステータスを「完了」に移動させる設定

JIRA のプロジェクトに行って、右上にある「自動化」ボタンをクリックします。
2023-09-23_23h46_33.png
すると以下のメニューが出てくるので、「自動化を作成」をクリックします。
2023-09-23_23h47_33.png
遷移先のサイドメニューに「自動化」の項目があるので、クリックします。
表示される画面の右上に「ルールを作成」というボタンがあるので、クリックします。
すると、画像のように JIRA の自動化を起動するトリガーを設定する項目が表示されます。
2023-09-23_23h51_28.png
トリガーの選択画面に遷移したら画像赤枠の「ブランチの作成時」を選択します。
2023-09-23_23h55_06.png
トリガーを選択すると追加の設定を行うことができる画面が表示されます。
今回はステータスが「BACKLOG」となっているものを移動させたいので、「IF:条件を追加」を選択します。
2023-09-23_23h56_13.png
表示される「課題フィールドの条件」を選択し、画像のように値を設定します。
2023-09-24_00h28_14.png
これによって、トリガーが発生した時に BACKLOG のステータスにいるイシューだけ対応するようにできました。
保存したら、最後に「その場合: アクションを追加する」を選択し、「課題のトランザクション」をクリックします。
以下のように移動させるステータスを「進行中」に設定し、保存します。
2023-09-24_00h31_01.png
以上が完了したら、任意の名前を付けて有効化させます。
これで自動化の設定は完了です。
なので、動作確認をしてみます。
GitLab でブランチ名に「MFMZ-11」の名前が存在するブランチを作成します。
すると、作成したブランチとイシューが画像のように紐づきます。
2023-09-24_00h35_11.png
さらに、しばらくすると自動でステータスが移動することも確認できます。
以上でステータスの自動移動が設定できました。
残りの自動化も同様に行っていきます。

ブランチがマージリクエストを作成した時に、ステータスを「レビュー中」に移動させる設定

トリガー: プルリクエストの作成時
条件: ステータスが「進行中」と等しい
2023-09-24_00h43_12.png
アクション: 課題を「レビュー中」にトランザクションさせる
2023-09-24_00h44_18.png
完成フローは以下の通りです。
2023-09-24_00h44_40.png

マージリクエストがマージされたときにステータスを「完了」に移動させる設定

トリガー: プルリクエストのマージ時
条件: ステータスが「レビュー中」と等しい
アクション: 課題のステータスを「完了」にトランザクションする。
完成したフローは以下の通りです。
2023-09-24_00h49_06.png
これで各自動化が達成できました。
ちなみに、条件はステータスだけでなく下記のように課題タイプの条件も追加できるので、バグ対応とストーリー対応の移動させるステータスを振り分けることもできます。
2023-09-24_00h48_13.png

導入への課題

ここまでで、JIRA のステータス移動を自動化することができました。
じゃあ、早速導入しましょうと言いたいところですが一部課題もあります。
一つ目は GitLab との連携がグループ単位でしか行えないことです。
そのため、グループの中の GitLab 全てが対象となり、仮にたまたまイシューの識別子が一致してしまった場合意図しない JIRA のステータスが移動してしまう可能性があります。
よって、導入する際はチーム内だけでなく対象の GitLab グループにプロジェクトを作成している人たちの同意が必要となります。
ただ、GitLab のサブグループでも連携はできるので、サブグループを作成し必要なプロジェクトをそのグループに移動させることで対応はできます。
とはいえ、プロジェクトの数が多いと移管も面倒ですし、どのみち許可は必要となります。
なお、GitLab のプロジェクトをサブグループに移管する方法はこちらのQiita 記事に記載されています。
二つ目は自動化を設定するには最低でもプロジェクトの管理者権限を持つ必要があることです。
なので、気軽に開発者が設定することができず、試そうにも試せない状態となります。
また、仮に設定する場合もできる人が限られているので、特定の人の負荷が大きくなってしまいます。
以上のことから、気軽に導入はできないですが、入れてみたら便利そうなので入れてみたいなとは思っています。

おわりに

今回は JIRA と GitLab をGitLab for Jira Cloudで連携させて、GitLab のブランチ作成・マージリクエスト作成・マージされたときに、ステータス移動を自動で行うため方法を記載しました。
出来そうなのにできないとずっとモヤモヤしていたので、今回ようやくしこりが取れて嬉しいです。
この記事で紹介したのはステータス移動に関わる部分だけでしたが、自動化の設定には他にもたくさんあるので、試して見ると楽しいかもしれないです。
最後にまた愚痴になってしまうのですが、GitLab と JIRA の連携系の記事は文字しか記載されていないことが多く探すのがかなりしんどいです。
もう少し、キャプチャを添付してくれないかと思う今日この頃でした。
ここまで読んでいただきありがとうございました。

参考資料

JIRA と GitHub の連携についての Qiita 記事
GitLab のグループの作成方法
このコミュニティの投稿で GitLab のグループ作ってないから連携できないのでは?と気づけた個人的に最高な投稿
JIRA で自動化を設定している記事

Discussion