これはなに
Jiraのエピックのステータス変更をトリガーとして、エピックのカスタムフィールドに登録されているメンバー宛にSlackでメンション通知を自動化で送る方法について書いている備忘録です。
使うもの
- Jira
- Slack(Pro版)
JiraはJira Softwareを対象として書いています。
Jira Work Managementでも同じように機能するかは未検証です。
Slack Pro版は、メンション通知したいメンバーが自動化フローごとに固定で決まっている場合は不要で、カスタムフィールドに登録されているメンバー宛にメンション通知をしたい場合は、ワークフロービルダーを使うためPro版が必要になると思われます。
もし他の方法があったら教えてください。
自動化の設定
今回は下記のようなケースを想定して設定を行います。
カスタムフィールドの作成
まずカスタムフィールドを設定します。
プロフィールアイコン左にある設定(歯車アイコン)から課題を選び、サイドメニューのカスタムフィールドにアクセスします。
チームの管理者権限があるユーザーしかアクセスできないと思われるので注意です
画面右上にあるカスタムフィールドを作成のボタンをクリック
するとフィールドタイプの選択がポップアップ表示されます。
ここでユーザーピッカー(単一ユーザー)を選んでください。
後述しますが、Slackのワークフローではユーザーピッカー(複数ユーザー)で選んだユーザーの情報を受け取ることができなさそうだった為、単一ユーザーを選んでいます。
カスタムフィールドの名前と説明を入れて作成します。
作成後に「フィールドを画面に関連づける」という画面表示が挟まりますが、これが何を指すのかわかっていません...
アクションとしては更新とキャンセルが選べますが、一旦キャンセルを選んで問題ないと思います。
SlackワークフローでWebhookを作成
サイドメニューの自動化→ワークフローと進んで右上のワークフローを作成するボタンをクリック。
新規タブでワークフローの設定画面が開くので、一番下のWebhookからを選択。
変数を設定するを選んで下記の3つを設定します。名前は任意です。
-
mentionUserEmail- データタイプ...
Slackユーザーのメールアドレス
- データタイプ...
-
jiraUrl- データタイプ...
テキスト
- データタイプ...
-
message- データタイプ...
テキスト
- データタイプ...
続行するボタンを押すとワークフローが設定されてWebリクエストのURLが発行されるので、リンクをコピーしておきます。
このようになっていればOKです。
自動化(Automation)の設定
Jiraに戻ります。
通知を設定したいプロジェクトに移動し、サイドバーのプロジェクト設定→自動化のメニューを選んで右上のルールを作成ボタンをクリックします。
ルールビルダーが立ち上がるので、ここで設定を行っていきます。
今回はテスト完了へのステータス変更時をトリガーとするので、課題のトランジション時を選択し、ターゲットステータスにテスト完了を選びます。
コンポーネントを追加を選んで他の条件も設定していきます。
ここは任意ですが、一応課題フィールドの条件で課題タイプがエピックと一致する条件をIF条件で追加しておきます。
(後からエピックだけではなくストーリーにもテスト完了のステータスを追加したいということがあるかもしれないので)
続いて課題フィールドの条件で、先ほど作成したカスタムフィールドauthorizerが「空ではない」という条件を設定します。
アクションでWebリクエストを送信を追加し、メソッドでPOSTを選んで下記のようにカスタムデータを設定します。
{
"mentionUserEmail": "{{issue.customfield_XXXXX.emailAddress}}",
"jiraUrl": "{{issue.url}}",
"message": "リリース承認依頼がありました。"
}
mentionUserEmail,jiraUrl, messageについては先ほどSlackワークフローで設定した変数名を入れてください。
customfield_XXXXXの部分に関しては、冒頭で追加したカスタムフィールドauthorizerのIDが入ります。
このIDは、プロジェクトの設定→課題タイプにアクセスして、デベロッパーモードで対象のフィールド要素をフォーカスすると確認することができます。
上の例だと、10037がauthorizerのIDになります。
messageの内容はお好みでカスタマイズしてください。
{{issue.url}}などはJQLというJira独自のクエリ言語で使われる「スマートバリュー」というもので、課題検索やフィルターで演算子を使って高度な課題検索ができるようになっています。
詳細は下記リンクを参照してください。
最後にルールの名前を登録し、ルールをオンにして設定完了です。
しかし、このルールのみだと、authorizerが設定されていない状態でエピックをテスト完了ステータスにトランジションしてしまった時にAutomationが動かないため、もう一つルールを追加しておきます。
自動化ルールの一覧に戻り、先ほど作成したルールのアクションで「コピー」を選びます。
コピーが完了したら適当にルールの名前を変え、トリガーを課題のトランジション時からフィールド値の変更時に変えます。
変化を監視するためのフィールドにauthorizerをセットし、変更タイプを追加された値にしておきます。
続いて、IF条件で課題フィールドの条件を追加し、対象フィールドをステータス、条件を「テスト完了と等しい」に設定します。
その他はコピー元と条件を変える必要はありません。
これで、ステータスがテスト完了にトランジションした後でauthorizerフィールドに承認者を追加した場合もAutomationが動くようになります。
Slackワークフローで変数を含めたメッセージを作成する
先ほど作成していたSlackワークフローに戻ります。
ステップにメッセージを選んで追加します。
今回は特定のチャンネルに通知する想定なので、チャンネルへメッセージを送信するを選びます。
通知したいチャンネルを選んだのち、変数を挿入するから上記のように変数をメッセージに追加します。
この時、mentionUserEmailのプルダウンで @表示名が選択されていることを確認しておきます。デフォルトでこの設定になっているはずです。
mentionUserEmailに入ってくるデータがユーザーピッカー(複数ユーザー)だとうまく動かなかったため、冒頭のカスタムフィールド作成ではユーザーピッカー(単一ユーザー)を選んで作成して対応しています。
この方法で複数名メンションしたい場合は、単一ユーザーのカスタムフィールドを複数作成し、Slack側の変数も人数分用意するしかなさそうです...
全て設定が完了したら、ワークフローの名前、説明、画像などを任意で設定して準備完了です!
動作確認
ワークフローが正常に動くか確認しましょう。
Jiraのエピックにauthorizerが設定されている状態で、ステータスを開発完了からテスト完了にトランジションします。
うまく設定できていれば、このようにワークフローが動いて通知が届くはずです。
同様に、authorizerが設定されていない状態でステータスをテスト完了にして、後からauthorizerに承認者を設定した場合も通知が来るかどうかをチェックしてください。
おまけ: ワークフローを使わずにSlack Integrationを使って通知する方法
承認者が1人であったり、Slackで承認者のユーザーグループが設定されていたりと、メンション先が固定の場合は、Slackワークフローを使わずにSlack Integrationを設定して通知することもできます。
チャンネル情報を開いて、インテグレーションタブからAppのアプリを追加するを選択します。
アプリ追加画面で検索してIncoming Webhookをインストールします。
通知をしたいチャンネルを選んで、インテグレーションの追加ボタンをクリックし、次のページで表示されるWebhook URLをコピーします。
JiraのAutomationではアクションにSlackメッセージを送信を設定します。
上記の例ではSlack側にauthorizerというユーザーグループが設定されている前提で、そのグループ宛にメンションをする設定になっています。
このように通知されます。
こちらの方法はワークフロービルダーを使わないので、Pro版でなくても設定できます。
参考: JQLスマートバリューの一覧
上記ドキュメントにEpic関連の通知でよく使いそうなスマートバリューの値とプロパティが記載されています。
メッセージで通知したい内容に応じて参照してカスタマイズしてみてください。





























