8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ゆめみ その2Advent Calendar 2019

Day 10

GitHub Actions で Slack に通知をお手軽に送る

Posted at

これは ゆめみ その2 Advent Calendar 2019 の10日目の投稿です。

使ってますか? GitHub Actions。

今回は GitHub Actions で何かしらの通知を Slack へ送る、簡単なスクリプトの例を紹介します。

GitHub の Marketplace を見ると、Slack 通知系のサードパーティの action がいくつかありますが、自分でスクリプトを書いても curl コマンドを叩くだけなので、その action が用途にばっちり合ってる場合を除いて、わざわざ既存の action を使う必要はありません。カスタマイズする際に自由にいかないことも多いですしね。

事前準備

Slack API アクセス用のトークン(文字列)を、GitHub の対象リポジトリに登録します。このトークンは GitHub Actions のワークフローの中から参照します。

スクリーンショット_2019-12-10_0_49_59.png

※ トークンの用意の方法が分からなければ拙作の https://qiita.com/hkusu/items/a899e51bdd260ab908d7#slack あたりの記事を参照ください。

スクリプト

curl コマンドで Slack API を叩くだけです。

# ...

- name: Notify Slack
  run: |
    data=$(cat <<EOF
    {
      "channel": "hoge_channel",
      "username": "github-actions",
      "text": "Success"
    }
    EOF
    )
    curl -X POST \
         -H "Content-type: application/json; charset=utf-8" \
         -H "Authorization: Bearer ${{ secrets.SLACK_BOT_TOKEN }}" \
         -d "$data" \
         https://slack.com/api/chat.postMessage

${{ secrets.SLACK_BOT_TOKEN }} の箇所が、事前準備で登録したトークン(文字列)に置き換えられます。

ちなみにヒアドキュメント(EOFの箇所)を利用しているのは、JSON の内容を見やすくしたいだけです。(今回はシンプルな内容の JSON ですが、複雑な内容になってくるとこれは重要。)

動作させると、次のように Slack の指定したチャンネルへ通知が送られます。

スクリーンショット_2019-12-10_0_59_43.png

通知の内容をもっと見栄えよくするには Attachments 等を利用するとよいでしょう。

それでは!

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?