Notifier - Jumeaux
Author: tadashi-aikawa
Description: Check difference between two responses of API.

コンテンツにスキップ

# Notifier

通知設定の定義です。
`Notifier`は`type`と`version`の値をもちます。

Key | Type | Description | Example | Default
--- | --- | --- | --- | ---
type | NotifierType | 通知のタイプ | slack |
version | (string) | Notifierのバージョン | 1 | 1

これらの値によって以下の仕様が変わります。

- `Notifier`のプロパティ
- 環境変数

以降のセクションでは`${type}@v${version}`という表記で紹介します。
たとえば、type=hoge, version=3の場合は`hoge@v3`となります。

##
slack@v2

### Environmental variables

Name | Required | Description | Example
--- | --- | --- | ---
SLACK_INCOMING_WEBHOOKS_URL | yes | Incoming WebhookのURL | https://hooks.slack.com/services/xx..
SLACK_THREAD_TS | no | レスするスレッドの`thread_ts` | 1605793970.186200

古いWebhook URLはサポートしていません

json payloadでchannelなど上書き可能だった古いIncoming Webhook URLはサポートしていません。
新しいIncoming Webhook URLを使用してください。

※ 動作確認していないだけで動く可能性はありますが保証しません

### Definitions

Key | Type | Description | Example | Default
--- | --- | --- | --- | ---
use_blocks | (bool) | Block Kitを使うかどうか | true | false

`use_blocks: true`のとき、通知メッセージにBlock Kitの`blocks[]`をjson文字列として指定するとBlock KitのUI表現を使って通知できます。

### Examples

#### SlackのBlodk Kit方式で通知するNotifier

    type: slack
    version: 2
    use_blocks: true

### Block Kitを使ったメッセージの構築について

Block Kitの構築にはBlock Kit Builderが便利です。

Block Kit Builderで作成したJSONの`blocks[]`を切り出し、notifierを使うアドオンのメッセージに指定しましょう。
final/notifyの場合は以下のように指定します。
YAMLのヒアドキュメント`>-`を使うことでjsonをそのまま挿入できるのがポイントですね。

    // 中略
    notifiers:
      jumeaux:
        type: slack
        version: 2
        use_blocks: true

    addons:
      final:
        - name: notify
          config:
            notifies:
              - notifier: jumeaux
                message: >-
                  [
                      {
                          "type": "header",
                          "text": {
                              "type": "plain_text",
                              "text": "{{ title }}"
                          }
                      },
                      {
                          "type": "section",
                          "text": {
                              "type": "mrkdwn",
                              "text": "　🟢 *Same: {{ summary.status.same }}*\n*　🟣 Diff: {{ summary.status.different }}*\n*　🟠 Fail: {{ summary.status.failure }}*"
                          },
                          "accessory": {
                              "type": "image",
                              "image_url": "https://avatars1.githubusercontent.com/u/9500018?s=160&v=4",
                              "alt_text": "alt text for image"
                          }
                      }
                  ]

通知は以下のようになります。

もう少し情報を充実させた例も紹介します。

    // 中略
    notifiers:
      jumeaux:
        type: slack
        version: 2
        use_blocks: true

    addons:
      final:
        - name: notify
          config:
            notifies:
              - notifier: jumeaux2
                message: >-
                  [
                    {
                      "type": "header",
                      "text": {
                        "type": "plain_text",
                        "text": "{{ title }}"
                      }
                    },
                    {
                      "type": "section",
                      "text": {
                        "type": "mrkdwn",
                        "text": "　🟢 *Same: {{ summary.status.same }}*\n*　🟣 Diff: {{ summary.status.different }}*\n*　🟠 Fail: {{ summary.status.failure }}*"
                      },
                      "accessory": {
                        "type": "image",
                        "image_url": "https://avatars1.githubusercontent.com/u/9500018?s=160&v=4",
                        "alt_text": "alt text for image"
                      }
                    },
                    {
                      "type": "divider"
                    },
                    {
                      "type": "context",
                      "elements": [
                        {
                          "type": "image",
                          "image_url": "https://tadashi-aikawa.github.io/jumeaux/img/logo-large.png",
                          "alt_text": "jumeaux"
                        },
                        {
                          "type": "mrkdwn",
                          "text": "v{{ version }}"
                        },
                        {
                          "type": "mrkdwn",
                          "text": "#️⃣ {{ key[:7] }}"
                        },
                        {% if summary.tags %}
                        {
                          "type": "mrkdwn",
                          "text": "🏷️️{% for x in summary.tags %} `{{ x }}`{% endfor %}"
                        },
                        {% endif %}
                        {
                          "type": "mrkdwn",
                          "text": "⏰ {{ summary.time.start[:19] | replace('T', ' ') }} ～ {{ summary.time.end[:19] | replace('T', ' ') }} ({{ summary.time.elapsed_sec }}秒)"
                        },
                        {
                          "type": "mrkdwn",
                          "text": "<{{ summary.one.host }}|{{ summary.one.name }}> 👈 🤖 👉 <{{ summary.other.host }}|{{ summary.other.name }}>"
                        }
                      ]
                    }
                  ]

このようになります。

##
slack@v1

Deprecated

version=1は非推奨であり、v3.0のリリースで廃止予定です。
version=2を使ってください。

### Environmental variables

Name | Required | Description | Example
--- | --- | --- | ---
SLACK_INCOMING_WEBHOOKS_URL | yes | Incoming WebhookのURL | https://hooks.slack.com/services/xx..

### Definitions

Key | Type | Description | Example | Default
--- | --- | --- | --- | ---
channel | string | 通知先 | `#times_test` |
username | (string) | 通知ユーザ名 | jenkins | jumeaux
icon_emoji | (string) | アイコンの絵文字 | smile |
icon_url | (string) | アイコンのURL | `http://jumeaux/images.img` |

### Examples

#### Slackの`#times_test`チャンネルに通知するNotifier

    type: slack
    channel: "#times_test"
    icon_emoji: "innocent"