GitHubActionsのビルド結果をslack-sendで通知する
概要
このチュートリアルでは、GitHub Actionsとslack-sendを組み合わせて、ビルド結果をSlackに通知する方法を紹介します。
前提条件
本チュートリアルは、下記条件にてサイト運用をしていることを前提とします。
- Next.js/Nuxt.jsを利用している。
- KurocoFrontを利用している。
- GitHub Actionsを利用している。
また、このチュートリアルではslack-sendを利用してslackに通知を行います。 詳細はslack-sendのドキュメントを参照してください。
Slackアプリ設定から通知用アプリを作成する
以下の画面からアプリを作成します。
https://api.slack.com/apps?new_app=1
From an app manifest
を選択します。
アプリを追加するワークスペースを選択します。
App Manifest
に以下のYAMLを設定してください。
incoming-webhookでSlackに通知を行います。
_metadata:
major_version: 1
minor_version: 1
display_information:
name: github-action-slack-send
features:
bot_user:
display_name: github-action-slack-send
oauth_config:
scopes:
bot:
- incoming-webhook
[Create]をクリックしてアプリを作成します。
ワークスペースにアプリをインストールする
Basic Infomation
のInstall to Workspace
からワークスペースに作成したアプリをインストールします。
通知するチャンネルを選択します。
アプリが追加できたらInstall app
にBot User OAuth Token
とWebhook URL
が追加されているのが確認できます。
Webhook URL
はGitHubに登録するのでコピーしてください。
GitHubにSecretsにWebhook URLを追加する
GitHubのリポジトリのページを開きます。
Settings
-> Secrets and variables
-> Actions
のNew repository secret
をクリック
NameにSLACK_INCOMING_WEBHOOK_URL
を設定します。
SecretにコピーしたWebhook URL
を設定します。
入力できたら[Add secret]をクリックしてGitHubシークレットを追加します。
Slack通知用のワークフローファイルを作成する
.github/workflows/
にslack-build-notifier.yml
を作成し、以下の内容を設定。
workflows
にはビルド用のワークフローファイルの name を設定してください。
name: Slack Build Notifier
on:
workflow_run:
workflows:
- Build and deploy to Kuroco front
types: [completed]
jobs:
on-success:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- uses: actions/checkout@v2
- name: Send GitHub Action trigger data to Slack workflow
id: slack
uses: slackapi/slack-github-action@v1.23.0
with:
payload: |
{
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "ビルド成功"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "GitHub Actions: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.event.workflow_run.id }}"
}
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": "Author: <https://github.com/${{ github.event.sender.login }}|@${{ github.event.sender.login }}>"
}
]
}
]
}
env:
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_INCOMING_WEBHOOK_URL }}
on-failure:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
steps:
- uses: actions/checkout@v2
- name: Send GitHub Action trigger data to Slack workflow
id: slack
uses: slackapi/slack-github-action@v1.23.0
with:
payload: |
{
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "ビルド失敗"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "GitHub Actions: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.event.workflow_run.id }}"
}
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": "Author: <https://github.com/${{ github.event.sender.login }}|@${{ github.event.sender.login }}>"
}
]
}
]
}
env:
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_INCOMING_WEBHOOK_URL }}
通知が成功するとSlackに以下のように通知されます。
サポート
お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。