📆

【Slack × GitHub Actions】チームのレビュー状況を可視化したい!

2024/12/24に公開

はじめに

この記事はポート株式会社 サービス開発部 Advent Calendar 2024の16日目の記事になる予定だったものです。(執筆遅くなってしまい申し訳ありません🙇‍♂️)

はじめまして!ポート株式会社でバックエンドエンジニアをしている@CookieGardenです。今年入社したばかりのエンジニア1年生です。普段は就活会議のサービス開発を担当しています。
この記事では、レビュー状況を可視化して毎朝チームで確認する方法を紹介します!

実装に至った経緯

自分たちのチームでは大臣制度というものがあり、自分はdaily担当大臣として日々のdailyを良くしていこうという取り組みを行なっています。大臣とはなんぞやという方はアドカレ6日目に投稿された記事があるので、是非ご覧ください〜

dailyの課題として、メンバーのレビュー進捗が見えづらい!というものがありました。そこで、レビュー状況を一覧で可視化し、毎朝のdailyでお尻叩きや期日の相談などの議論がしたい!と思いました。

早速Github CLIを叩いてSlackに貼り付ける運用を始めてみました。一応可視化することはできたのですが毎日やはり毎朝コマンドを叩くのは面倒です。というわけで実装参りましょう!

Slack側の設定

まずはSlackでWebhook URLを取得します。あとで使うので控えるのを忘れないようにしましょう。

https://port-inc.slack.com/marketplace/A0F7XDUAZ--incoming-webhook-

Github Apps

次にGithub Apps を作成します。Organizationだと権限がないことがほとんどなのでお願いしましょう。URLは適当なもので問題ないです。今回はプルリクエストの情報を取得したいので以下のように設定します。他にもいろいろできそうですね。

https://docs.github.com/ja/apps/creating-github-apps/registering-a-github-app/registering-a-github-app

設定が終わったら作成したAppをOrganizationにインストールするのですが、その前に秘密鍵を作成してローカルに落としておきましょう。

ここまで終わったらリポジトリに以下のようにSecretとVariableを登録します。

Type Name Value
Secret PRIVATE_KEY 秘密鍵の内容
Variable APP_ID 作成したAppのID

Github Actions

自分は平日の朝10時にワークフローが走る設定しました。先ほど設定したSecretsを使用します。

name: daily_review_status
on:
  schedule:
    - cron: '0 1 * * 1-5'
  workflow_dispatch:

jobs:
  get_review_status
    runs-on: ubuntu-latest
    steps:
      - name: Generate App Token
        uses: actions/create-github-app-token@v1
        id: app-token
        with:
          app-id: ${{ vars.APP_ID }}
          private-key: ${{ secrets.PRIVATE_KEY }}
          owner: syukatsu-kaigi

      - name: Set Review Status
        id: set_review_status
        run: |
            # ここでghコマンドを叩いてPRを取得
        env:
          GH_TOKEN: ${{ steps.app-token.outputs.token }}

      - name: Send to Slack workflow
        uses: slackapi/slack-github-action@v1.21.0
        with:
          payload: |
            {
              "review_status": {
                "text": ${{ env.REVIEW_STATUS }}
              }
            }
        env:
          SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

試してみよう!

※くれぐれもチームのチャンネルでやらないようにしましょう。自分のtimesやテスト用のチャンネルを用意できるのであればそこでやりましょう。(自戒)
※メンションは今の段階では外しておきましょう。クレームをいただきます。(自戒)

まとめ

この記事ではGitHub Actionsを用いたチームのレビュー状況を可視化し、Slackに投稿する方法を紹介しました。自分のチームでは毎朝これを確認して、「〇〇さんに負担が偏ってるかも」「〇〇日までに見ていただきたいです!」等の会話ができています。もちろんもっと良い方法もあると思うので色々試していきたいと思ってます!

おまけ

Discussion