概要

GitHub ActionsでSlack通知をする方法を調べところ、 公式が提供しているワーフクローがあったため使ってみる。

流れ

Incoming WebhookのURLを取得したところから始める。

  • Slackでアプリを作成する
  • Incoming WebHookを有効にしてURLを発行する
  • GitHub Actions設定をいれる

ワークフロー

以下のように slackapi/[email protected] を実行する。 この際にpayloadでymlに直接JSONを記載することもできるが(参考)、 行数が多いのでファイルから取得するようにした。

公式を見落としていただけだが、SLACK_WEBHOOK_TYPE を指定しないと 送信時に400エラーを返されて通知できないので注意する。

name: Slack Notification
on: push

jobs:
  test:
    runs-on: ubuntu-latest

    env:
      TZ: 'Asia/Tokyo'

    steps:
    - uses: actions/checkout@v2
    - name: Send GitHub Action trigger data to Slack workflow
      id: slack
      uses: slackapi/slack-github-[email protected]
      with:
        payload-file-path: "./.github/assets/payload.json"
      env:
        SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
        SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK

別に作成したJSONファイルは以下のもの。 BlockKitを活用すると手書きでJSONを書かなくてよくなる。

{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "This is a header block",
				"emoji": true
			}
		},
		{
			"type": "context",
			"elements": [
				{
					"type": "plain_text",
					"text": "Author: K A Applegate",
					"emoji": true
				}
			]
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "xxxxxxx"
			}
		}
	]
}

無事に送信できることを確認した。