1
0
-1
2 回答
- 10-1
皆さま
お世話になっております。
今回は、JIRA REST API を用いて Linux サーバ上で定期処理させる方法を取りました。
定期処理の内容としましては、
- REST API で影響度・緊急度が「高」になっているチケット ID 一覧を取得
- スクリプトデータファイル中を舐めて、チケット ID が既にあれば何もしない
- ない場合、詳細データを取得し Slack へメール投稿
- 再度スクリプトデータファイル中を舐めて、REST API でチケットが Close しているかを取得、していればデータファイルから削除
となります。
ご参考までに、バッチ処理の一部を記載させて頂きます(Bash にて動作確認しています)。
### function: Notify to Slack function notify2slack () { DataArray=(`curl -s -u "$JIRA_Account" -X POST -H "Content-Type: application/json" --data "{\"jql\":\"id = $1 \"}" "${JIRA_URL}/rest/api/2/search" | jq -r '.issues[] | .fields.issuetype.name, .key, .fields.summary, .fields.customfield_10431.value, .fields.customfield_10430.value, .fields.customfield_10438[], .fields.customfield_10439, .fields.customfield_10504.value, .fields.customfield_10443, .fields.customfield_10421 '`) ( echo "知得日時: ${DataArray[7]}" echo "知得起因: ${DataArray[0]}" echo "重要度: ${DataArray[3]}" echo "緊急度: ${DataArray[4]}" echo "影響範囲: ${DataArray[5]}" echo "サービス断: ${DataArray[6]}" echo "SlackURL: ${DataArray[8]}" echo "チケットURL: ${JIRA_URL}/browse/${DataArray[1]}") | mail -s "[${DataArray[1]}] ${DataArray[2]}" "$Slack_MailAddress" } ### Notify or Register Hi-Level Ticket ID for LINE in `curl -s -u "$JIRA_Account" -X POST -H "Content-Type: application/json" --data "{\"jql\":\"project = Incident AND status in (オープン, 対応依頼中, 対応中) AND (重要度 = 高 OR 緊急度 = 高) ORDER BY cf[10421] ASC\"}" "${JIRA_URL}/rest/api/2/search" | jq -r '.issues[] | .key'`; do if [ `grep -cw "$LINE" "$ScriptDataFile"` -eq 0 ]; then notify2slack "$LINE" echo $LINE >> "$ScriptDataFile" fi done ### CleanUp Closed Chicket from Log for LINE in `cat "$ScriptDataFile"`; do if [ `curl -s -u "$JIRA_Account" -X POST -H "Content-Type: application/json" --data "{\"jql\":\"id = $LINE_ \"}" "${JIRA_URL}/rest/api/2/search" | jq -r '.issues[] | .fields | .status | .name '` == '"クローズ"' ]; then sed -i '/'$LINE'/d' "$ScriptDataFile" fi done
- 10-1
標準の機能だとできるのは、JQL のフィルダーでの指定なので「重要度」「緊急度」が高のチケットを連携する事はできても、「一度通知されたチケットは二度以上通知されない」や「変更時であれば、フィールドの値がその他から「高」に変更された場合のみ通知」が難しいと思います。
ちなみに、Jiraは JIRA Cloud, JIRA Server のどちらをお使いでしょうか?
- 佐藤 琢
樋口様
ありがとうございます。
そして情報を漏らしており失礼致しました、JIRA Server v6.4.2 を使用しております。
JIRA は開発チケット管理とインシデント記録に使用しております。
今回の目的としましては、重要度・緊急度の高いインシデントチケットをメールや Slack を介して社内展開するというものです。
コメントを追加...
お世話になります。
「重要度」「緊急度」といったカスタムフィールドがあり、チケット作成または変更時にフィールドの値が「高」となっている場合は、メールまたは Slack へ通知を飛ばしたいです。
可能であれば、一度通知されたチケットは二度以上通知されないというふうにしたいです。
(変更時であれば、フィールドの値がその他から「高」に変更された場合のみ通知、など)
お知恵を拝借できますでしょうか。
宜しくお願い致します。