5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

GithubのWorkflowシステム使ったことありますか?

Githubの操作をトリガーにして、いろんなことが簡単にできるよ。というテーマでお送りしたいと思っています。

今回は、Issue操作イベントでのSlack通知をやってみようと思います。

通知のイメージはこんな感じです。

スクリーンショット 2024-06-13 4.34.07.png

使用するツール/拡張機能

手順

#001. Slackの準備

1. Slackワークスペースを用意。

ない方は新規で作成してください。
(本記事の内容はすべて無料で試すことができます。)

2. Incoming Webhooksアプリを追加

Slack/ワークスペース上でアプリの追加を行います。

スクリーンショット 2024-06-13 4.09.35.png

「Slackに追加」ボタンを選択してください。

3. Webhook URLの登録

Webhookアプリの設定画面が開くので、通知を送りたいチャンネルを選択します。

スクリーンショット 2024-06-13 4.11.01.png

保存後に、URLが表示されますのでメモしてください。

Slack側の設定は以上です。

#002. Githubリポジトリの準備

1. Githubリポジトリを用意

リポジトリを作成してください。(既存リポジトリでも可)

2. Secretsの登録(Webhook URLの登録)

GithubのリポジトリのSettingsタブ内のメニュー内にSecurityという項目を押下し、Actions secrets and variablesの設定を行います。

Repository secretsを追加します。
ラベル名に、SLACK_WEBHOOK_URLを入力してください。(このラベル名を実装で使います)
Value名に、先程メモしたURLを入力します。

スクリーンショット 2024-06-13 3.29.13.png

これでリポジトリのセットアップは完了です。

#003. GitHub Actions - Workflowの作成

1. ファイルの作成

/.github/workflows/slack-notify-github-workflows.ymlファイルを作成します。

2. ワークフローの定義

以下サンプルコードををGit上にPushしてください。

slack-notify-github-workflows.yml
name: Notify Slack on Issue Activity

on:
  issues:
    types: [opened, edited, closed, reopened]

jobs:
  notification:
    runs-on: ubuntu-latest
    steps:
      - uses: ravsamhq/notify-slack-action@v2
        if: always()
        with:
          status: ${{ job.status }}
          notification_title: "{workflow} has {status_message}"
          message_format: "{emoji} *{workflow}* {status_message} in <{repo_url}|{repo}>"
          footer: "Linked Repo <{repo_url}|{repo}> | <{workflow_url}|View Workflow>"
        env:
          SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

#004. 動作確認

では、Issueを起票してみましょう。
サンプルコードでは、Issueの「起票・編集・クローズ・再オープン」がトリガーで通知が飛ぶようになっています。(on > issue > typesの箇所。)

Slackを開いて、↓↓ みたいになっていたら成功です。

スクリーンショット 2024-06-13 3.42.44.png

結構簡単ですよね。

少し解説

今回はNotify Slack Actionを利用しました。

今回のサンプルでは、Minimalなものを用意しましたが、メッセージのフォーマットや、メンション設定、ステータスに基づいたアイコンのカスタマイズ設定が細かくできるようです。

もちろん、フォーマットで使用できるContextもたくさんあります。

{branch}
{branch_url}
{commit_url}
{commit_sha}
{emoji}
{repo}
{repo_url}
{status_message}
{run_url}
{job}
{workflow}
{workflow_url}

デバッグ方法

Jobsに以下を登録してActionsを発火させてみてください。

steps:
  - run: echo "${{ toJson(github) }}"

Actionsの実行結果を確認すると、通知に使用できるデータを確認することができます。

スクリーンショット 2024-06-13 3.55.57.png

例えば、Issueのタイトルを使いたいときは、こんな感じに指定すればいいかと思います。

message_format: "${{ github.event.issue.title }}"

まとめ

今回は、Slackの拡張アプリWebhookを使ったGithubの通知Actionsを実装してみました。

参考

5
6
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
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?