ワークフローエンジン『Digdag』でSlack通知する #digdag

はじめに

おばんです、先日地元の仙台に帰ったとき、観光客気分ではじめてずんだシェイクを飲んだら、美味しすぎてハマった田中です。

案件で Treasure Data社 の OSSワークフローエンジン 『Digdag』 を利用することがあり、その中でSlack通知を実装することがあったので、今回はその方法をまとめます。

インストール

以下の記事の Digdagのインストール実施 を参考にDigdagをインストールしてください。

SlackのIncoming Webhook URLを取得する

以下の記事の Webhook URL取得 を参照してください。

DigdagのSlack Pluginを使う

上記リポジトリのsampleディレクトリ内にある.digファイルと成功時/失敗時の.ymlを参考に、ファイルを揃えて $ digdag run -a hoge.dig するとSlackに通知が送信されます。

# slack.dig

_export:
  plugin:
    repositories:
      - https://jitpack.io
    dependencies:
      - com.github.szyn:digdag-slack:0.1.2
  webhook_url: https://hooks.slack.com/services/XXXX/XXXXX/XXXXXXX // <- 先ほど取得したWebhook urlを設定
  workflow_name: slack
  ENV: develop

+step1-1:
  echo>: "Next will be success!"

+step1-2:
  slack>: good-template.yml

+step2-1:
  echo>: "Next will be failed..."

+step2-2:
  sh>: exit 1
  _error:
    slack>: danger-template.yml
# good-template.yml

username: Digdag
icon_emoji: ':blush:'
# channel: '#general' ## if you need to send message to specific channel
attachments:
- fallback: '[SUCCESS] ${workflow_name} workflow'
  color: "good"
  text: '*[SUCCESS]* `${workflow_name}` Workflow'
  mrkdwn_in:
  - text
  - pretext
  - fields
  fields:
  - title: Task Name
    value: "${task_name}"
    short: false
  - title: Session Date
    value: "${session_date}"
    short: true
  - title: Environment
    value: "${ENV}"
    short: true
# danger-template.yml

username: Digdag
icon_emoji: ':blush:'
# channel: '#general' ## if you need to send message to specific channel
attachments:
- fallback: '[SUCCESS] ${workflow_name} workflow'
  color: "good"
  text: '*[SUCCESS]* `${workflow_name}` Workflow'
  mrkdwn_in:
  - text
  - pretext
  - fields
  fields:
  - title: Task Name
    value: "${task_name}"
    short: false
  - title: Session Date
    value: "${session_date}"
    short: true
  - title: Environment
    value: "${ENV}"
    short: true

君だけの最強のSlack通知を手に入れろ!

スクリーンショット 2017-09-13 17.11.26

スクリーンショット 2017-09-13 17.11.37