JIRAのステータス変更を自動化

[PONOS Advent Calendar 2022](https://qiita.com/advent-calendar/2022/ponos)の4日目の記事です。
昨日は@nissy_gpさんの「[TikTok APIを用いて広告レポートを自動的に取得する](https://qiita.com/nissy_gp/items/dace6d45e2ece9987d4e)」でした。

# はじめに
ソフトウェア開発でコーディング作業と進捗管理作業と両立させるのは、当たり前のこと。なんですが、どうしてもコーディング作業に集中していたりすると進捗管理ツールのステータスを変更し忘れるなど、ありがちです。
開発チームで運用フローを徹底するのはもちろんですが、作業を効率化するために自動化は積極的に取り入れていきたいものです。
今回は、Atlassian製品のJira SoftwareとBitbucketを利用した場合のステータス変更の自動化を試してみます。

# 環境
[Atlassian Cloud - Jira Software](https://www.atlassian.com/ja/software/jira)
[Atlassian Cloud - Bitbucket](https://www.atlassian.com/ja/software/bitbucket)

※ 自動化の設定は、Jira Softwareのプロジェクト設定にあるため、プロジェクトの管理者権限が必要なのでご注意ください。


# 前提
Jira Softwareで管理する課題のステータスとして、以下の状態を想定します。
|ステータス|状態|
|-|-|
|新規|課題を作成した状態|
|分担済|課題の担当者を決めた状態|
|対応中|担当者が対応中の状態|
|対応済|担当者が対応を完了した状態|

各ステータスは以下のワークフローに沿って変更できることを想定します。
|ワークフロー|
|-|
|新規　→　分担済　→　対応中　→　対応済|


# 作業イメージ
前提に記載した課題のステータスとワークフローの下で、担当者が自身で課題を作成し、対応し、完了するまでの作業は以下になります。
このとき、各作業工程での発生する問題点を合わせて書き並べてみます。
|#|工程|内容|問題点|
|-|-|-|-|
|1|課題の新規作成|Jira Softwareに課題を新規作成する。||
|2|担当者の設定|課題の担当者に自分を割り当てる。|ブランチ準備に意識があって自身への割り振りを忘れがち。|
|3|ステータスの変更|課題のステータスを分担済に変更する。|ブランチ準備に意識があってステータス変更を忘れがち。|
|4|課題からブランチを作成|課題の開発欄にある[ブランチを作成]からBitbucketに連携する。|
|5|ブランチを作成|連携したBitbucketで作業ブランチを作成する。|
|6|ステータスの変更|課題のステータスを対応中に変更する。|ブランチ作成後、即開発に入ってステータス変更を忘れがち。|
|7|開発|作業ブランチで開発してコミット・プッシュする。||
|8|プルリクエストの作成・マージ|プルリクエストを作成して承認を経てマージする。||
|9|ステータスの変更|課題のステータスを対応済に変更する。|マージで満足してステータス変更を忘れがち。|

コーディングする作業のための準備と作業そのものに意識がいくので、各作業の合間に入るステータス変更を忘れがちになります。また、自分で課題を作成して開始する場合、自分に分担を割り当てる作業を手間に感じて、ステータスが新規のまま、作業が開始になることも考えられます。

これらの問題点を自動化で解決してみます。

# 自動化
作業の合間に入るステータス変更を忘れがちになる問題点に対して以下の２点の自動化を試してみます。
* (A) ブランチの作成をトリガーにして対応中のステータスまで変更すること
* (B) プルリクエストのマージをトリガーにして対応済のステータスに変更すること

### (A) ブランチの作成をトリガにステータス変更
ここでは、ブランチの作成をしたときにステータスに応じて自動的に以下を設定していきます。
* 担当者を作業者に設定
* ステータスを担当済に設定
* ステータスをさらに対応中に設定
各課題のステータスの状態も異なることから条件分岐してそれぞれのケースで設定します。

Jira Softwareでの自動化の設定手順は以下の通りです。

1. <b>ルールの作成</b>
    1. 左メニュー[プロジェクト設定]→[自動化]を選択（※ 管理者権限必要）
    1. 右上[ルールを作成]ボタンを選択<br><br>
1. <b>トリガーの作成</b>
    1. [新しいトリガー]に[ブランチの作成時]を選択
    1. [保存]ボタンで確定<br><br>
1. <b>条件の作成(1)</b>
    1. [コンポーネントを追加]で[新しい条件]を選択
    1. [新しい条件]から[課題フィールドの条件]を選択
    1. [フィールド]に[ステータス]を選択、<br>[条件]に[と等しい]を選択、<br>[値]に[新規]を選択
    1. [保存]ボタンで確定<br><br>
1. <b>アクションの作成(1-1)</b>
    1. [新しいアクション]から[課題の割り当て]を選択
    1. [次に課題を割り当て]に[ユーザを指定]を選択、<br>[ユーザーの選択]に[イベントを起動したユーザー]を選択
    1. [保存]ボタンで確定<br><br>
1. <b>アクションの作成(1-2)</b>
    1. [新しいアクション]から[課題のトランジション]を選択
    1. [ターゲットステータス]に[分担済]を選択
    1. [保存]ボタンで確定<br><br>
1. <b>アクションの作成(1-3)</b>
    1. [新しいアクション]から[課題のトランジション]を選択
    1. [ターゲットステータス]に[対応中]を選択
    1. [保存]ボタンで確定

ここまでの作業で、ステータス[新規]に対してユーザの分担とステータスを対応中まで変更する自動化の設定ができたことになります。同様にして、条件の作成(2)としてステータス[分担済]の場合も考慮して、ステータスを[対応中]とする内容を追加します。（設定する値とアクションの個数の違いなので手順は省略します。）

ひと通りの設定の後、最後に[自動化に名前を付ける]の欄に管理しやすい名前をつけて、[オンにする]ボタンから自動化のルールを有効にします。

ひと通りの設定後のイメージはこちらです。
![Jira1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986082/7ca335d5-2c0a-3efa-36ce-3874b32db014.png)
ルールを有効にした後、課題からブランチを作成すると、この自動化のルールが適用になり、自動的に、ブランチを作成したユーザーが担当者に設定され、ステータス変更が対応中まで遷移します。

### (B) プルリクエストのマージをトリガにステータス変更
ここでは、プルリクエストをマージしたときに自動的に以下を設定していきます。
こちらも手順としては(A)と同様なので詳細は省略しますが、[新しいトリガー]に[プルリクエストのマージ時]を選択します。
ルールを有効にした後、課題に連携しているブランチをプルリクエストからマージすると、この自動化のルールが適用となり、自動的にステータスが対応済に遷移します。

※ 通常、プルリクエストをマージする際にチケットのステータスを変更する選択肢があるので、自動化のルールを設定せずに手動で選択する方が柔軟な管理はできます。

# まとめ
進捗管理ツールでのステータス変更が忘れがちになるところを、ツールが提供する自動化の枠組みを利用することで更新忘れを無くして適切に管理することができます。加えて、手作業で設定するステップが省略されるので効率化することができます。

今回試したJira Softwareの自動化の機能には、トリガー、条件、アクションが多数準備されており、組み合わせ次第でいろいろ実現できるので試してみてください。

ということで、明日は@honeniqさんです！