Jira Automationでエピックの子課題アサインメンバー全員へのメンション付きコメントを自動追加する方法

## これはなに
Jiraのエピックステータス変更をトリガーとして、子課題にアサインされているメンバー全員へのメンションが付いたコメントを自動で追加する方法について書いています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452658/c23df4be-ca89-c7b1-818f-6f0af917729f.png)

子課題にアサインされているメンバーにメンションして、エピックに上記のようなコメントが自動で届きます。

https://qiita.com/AreUtoo/items/1214aeece40fda7c7a53

前回投稿した上記の記事では、Slackワークフローだと複数ユーザーのメンションをつけることが難しいと書いたのですが、
Jira内のコメントであれば複数名にメンションをすることが可能そうだったので、その備忘録となります。

## 自動化の設定

今回は下記のようなケースを想定して設定を行います。

- Jiraのエピックのワークフローは下記の通り
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452658/5f32eec5-fe0d-d8ad-3f53-4fce6be5b61c.png)
- ステータスが`リリース承認済み`になった際、自動で対象エピックにコメントを送信
- コメントにはエピックの子課題にアサインされているメンバー全員へのメンションを含める

ルールの全体像は下記の通りです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452658/c9a59913-ad58-7ef7-b9be-059a307a614b.png)

ステータスがトランジションした時のトリガーと、課題タイプがエピックと一致のIF条件はそのままなので説明を割愛します。

### 課題を検索アクションの設定

JQLを使い、対象エピックの子課題を検索できるようにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452658/c2396e86-ee5d-5ffd-40f4-efcd1693fed1.png)

```
parent = {{issue.key}}
```

このように指定することで、親が対象エピックになっている課題をこの後のアクションで検索できるようにしておきます。

### コメントを追加アクションの設定

コメント内ではスマートバリューが使えるので、これを活用して設定を行います。

`{{lookupIssues}}`を使って子課題の情報を取得します。

https://support.atlassian.com/ja/cloud-automation/docs/jira-smart-values-issues/#--lookupIssues--

```
{{#lookupIssues}}
{{assignee.displayName}}
{{/}}
```

このように書くことで、先ほど設定したJQLの課題検索で返された全て課題の情報を表示できます。
表示したい情報は`{{#lookupIssues}}`と`{{/}}`で囲まれた中に指定します。

上の例だとアサイン担当者の`displayName`が返されますが、今回はメンションの形式にしたいので少し調整します。

https://support.atlassian.com/ja/cloud-automation/docs/jira-smart-values-users/#How-to-mention-another-user

> ```
> [~accountId:their account ID]
> ```

ドキュメントにはこのように書くとメンション形式にできると記載があります。

今回は`their account ID`の部分を`{{lookupIssues}}`で返ってきた課題の`{{assignee.accountId}}`を取得するように変更します。

コメントに含めたいメッセージを加えて組み合わせると下記の通りです。

```
{{#lookupIssues}}
[~accountid:{{assignee.accountId}}]
{{/}}
リリース承認が完了しました。
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452658/7c7a8aaa-bd53-d513-0b27-6d405df778ee.png)

ルールをONして設定完了です！

## 惜しい点

今回の設定では`{{lookupIssues}}`で紐づく子課題を全て取得してくるため、複数の子課題に同じメンバーがアサインされていた場合、下記のように重複してメンションがされてしまいます。

例えばエピックの子課題が4つあって、うち3つを田中太郎さん、1つを鈴木花子さんがアサインされていたとすると


> @田中太郎
> @田中太郎
> @田中太郎
> @鈴木花子
> リリース承認が完了しました。


コメントはこのように表示されます。

送信されるコメントは1件なので通知がうるさくなることはありませんが、見栄えとしてあまり美しくはないのが惜しい点です。
通知という役割は果たせているので一旦良しとしています。

## おまけ: JiraのSlack App連携を設定してJira内でメンションされた時に通知する

今回設定したAutomationと組み合わせて、SlackのApp連携でJiraのアプリを入れておくと、メンション付きのコメントが来た際にSlackメッセージで通知もしてくれるので、より気づきやすくなります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452658/a0bfa9df-ba6e-0688-b1e8-c6a1d1b4c14a.png)

`Someone mentions you`にチェックを入れて設定をすると、Jiraのissueにメンション付きでコメントがされた時に下記のようにSlackのメッセージで通知が届きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452658/6a46ae4b-6754-b631-3608-dfe3c6eb2f3f.png)


## 参考: JQLスマートバリューの一覧

- [Automation smart values - issues](https://support.atlassian.com/ja/cloud-automation/docs/jira-smart-values-issues/)
- [Automation smart values - users](https://support.atlassian.com/ja/cloud-automation/docs/jira-smart-values-users/)

上記ドキュメントにEpic関連の通知でよく使いそうなスマートバリューの値とプロパティが記載されています。
コメントで通知したい内容に応じて参照してカスタマイズしてみてください。