Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2912

Slack WorkflowでBacklogチケット起票を自動化してみる

$
0
0

まずはじめに

Slack Workflowというものがあります。
定例作業をSlack上で自動化することが可能です。
ツールの連携とタスクの自動化

Webhookも使えます。
Webhook を使用した高度なワークフローを作成する

やりたいこと

現状はシステムのエラーをSlack通知するようにしています。

そのエラー通知の中から、Backlogに課題追加が必要なものを確認して、
起票する運用にしています。

以下手順で行っています。
1. Slackの内容を確認
2. チケット起票が必要なものか確認(ドキュメント見る or メンバーに質問)
3. Backlogにチケット起票する(Slackの通知をコピペ)

Slack→BacklogやGitHubを行き来するので、面倒だなという思いが。。。
ここらへんをSlack上で済ませたいと思い、Slack Workflow導入を考えました。

結論から

Slack Workflowからスプレッドシートを経由して、
GASでBacklog APIを呼ぶことにしました。

Slack Workflow -> google スプレッドシート -> Backlog

手順

  1. スプレッドシート作成

  2. Slack WorkFlowを作成

  3. 作成したシートにワークフローで受け取ったパラメータを追記します。

  4. GASでBacklog APIでチケット追加するスクリプトを用意

    functioncreateTicket(apiKey,baseUrl,projectId,issueTypeId,summary,description){vardate=Utilities.formatDate(newDate(),'Asia/Tokyo','yyyy/MM/dd');varpayload={"projectId":projectId,"summary":summary+" ("+date+")","issueTypeId":issueTypeId,"priorityId":'3',"description":'```\n'+description+'\n```'}varoptions={"method":"POST","payload":payload}varurl=baseUrl+'/api/v2/issues'+'?'+'apiKey='+apiKey;returnJSON.parse(UrlFetchApp.fetch(url,options).getContentText("UTF-8"));}functionmain(){// 現在のスプレッドシートを取得varspreadsheet=SpreadsheetApp.getActiveSpreadsheet();//現在のシートを取得varsheet=spreadsheet.getActiveSheet();lastRow=sheet.getLastRow();//エラータイトル取得varthisErrTitle=sheet.getRange(lastRow,1).getValue();//エラーメッセージ取得varthisErrMsg=sheet.getRange(lastRow,2).getValue();varapiKey='apikey';varbaseUrl='baseurl';//ここで登録したいプロジェクト指定varprojectId='projectId';varissueTypeId='issueTypeId';//バックログに課題追加varjson=createTicket(apiKey,baseUrl,projectId,issueTypeId,thisErrTitle,thisErrMsg);}
  5. GAS準備できたら、スプレッドシート更新で動くようにトリガを設定

これでWebhookURLを実行するだけでSlack Workflowが動きます

試してみる

curl -X POST -d\"{\"error_title\":\"$error_title", \"error_message\":\"$text\"}" \$slack_webhook_url

curl実行でSlackに通知がきます。


「チケット起票しますか」ボタン押下でチケットが起票されました!
(キャプチャは割愛で・・・)

最後に

そもそもSlackへ通知という所から見直そうという話も出ているので、この仕組み自体の寿命はとても短いかもしれません・・・
今後活かせるタイミングがきたら、また向き合いたいと思います。
おしまい。

参考

Slack | Webhook を使用した高度なワークフローを作成する
Backlog API | 課題の追加
Google Spreadsheetに新しい行が追加されたらChatworkに通知する


Viewing all articles
Browse latest Browse all 2912

Trending Articles