これは ゆめみ その2 Advent Calendar 2019 の10日目の投稿です。
使ってますか? GitHub Actions。
今回は GitHub Actions で何かしらの通知を Slack へ送る、簡単なスクリプトの例を紹介します。
GitHub の Marketplace を見ると、Slack 通知系のサードパーティの action がいくつかありますが、自分でスクリプトを書いても curl コマンドを叩くだけなので、その action が用途にばっちり合ってる場合を除いて、わざわざ既存の action を使う必要はありません。カスタマイズする際に自由にいかないことも多いですしね。
事前準備
Slack API アクセス用のトークン(文字列)を、GitHub の対象リポジトリに登録します。このトークンは GitHub Actions のワークフローの中から参照します。
※ トークンの用意の方法が分からなければ拙作の 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 の指定したチャンネルへ通知が送られます。
通知の内容をもっと見栄えよくするには Attachments 等を利用するとよいでしょう。
それでは!