Money Forward Developers Blog

株式会社マネーフォワード公式開発者向けブログです。技術や開発手法、イベント登壇などを発信します。サービスに関するご質問は、各サービス窓口までご連絡ください。

20230215130734

GitHub Actionsで新規クエストのお知らせをSlackに自動投稿する

はじめに

こんにちは。 マネーフォワード福岡開発拠点でSREとして働いているM-Yamashita です。

今回の記事は、GitHub Actionsを使ったSlackへの自動投稿の話です。
現在、クラウド経費・クラウド債務支払サービスの開発においてクエストという制度を採用しています。クエストを新しく作成するたび、開発メンバーに知らせるために手動で都度Slackに投稿していました。この手動作業を自動化した話をお伝えします。

クエストとは

経費・債務支払サービスでは開発ロードマップに沿って日々開発を進めています。この開発と並行して、内部改善をしていくことも重要です。 弊社ではそのような内部改善を推進する制度として、クエストという制度を導入しています。クエストとは、誰かにしてほしいことをまとめた「依頼」です。受ける人にとっては、業務の合間にチャレンジする「課題」です。

クエストはGitHubのIssueとして作成され、依頼内容や難易度のレベル、クリアランクが設定されます。また他のIssueと区別するために、クエスト作成者はex_questというラベルをIssueに設定します。

クエストの一例:

クエストのサンプル

課題

クエストは誰にでも作成できるのですが、その新規クエストを開発メンバーに知らせる必要があります。今まではクエストを作成した人やクエストを管理している人が、都度Slackに手動で投稿していました。

クエスト新規追加時のSlack手動投稿例

ちょっとした投稿ではあるものの、クエストを作るたびにそのIssueのURLをコピーしてSlackに貼り付けてお知らせを毎回投稿する作業は手間がかかります。 そのため、この手間をなくすためにGitHub Actionsを使ってBotによる自動投稿を行いました。

GitHub Actionsによる投稿の自動化ワークフロー

自動化に際し、ワークフロー実行のトリガーの検討を行いました。単純なIssue作成の検知では、他のIssueを誤検知してしまいます。そのため、クエストのラベルがIssueに付与されたことをトリガーにしてワークフローを実行するようにしました。
また、Slackへの投稿機能はGitHub Actionsのデフォルト機能に存在しないので、MarketplaceにあるActionを使う必要があります。

github.com

今回のSlackへの投稿を満たせそうなActionを探したところ、以下のActionを発見しました。 このActionはスター数が多く、メンテナンスも続いており良さそうと判断し、ワークフローに取り込みました。

github.com

作成したワークフローは次のとおりです。

name: Notification quest to slack
on:
  issues:
    types:
      - labeled
env:
  SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}

jobs:
  add-comment:
    if: github.event.label.name == 'ex_quest'
    runs-on: ubuntu-latest
    permissions:
      issues: write
    steps:
      - name: Slack Notification
        uses: rtCamp/action-slack-notify@v2
        env:
          SLACK_USERNAME: Quest Notification bot
          SLACK_TITLE: New Quest
          SLACK_COLOR: good
          SLACK_MESSAGE: The quest came. ${{ github.event.issue.title }} ${{ github.event.issue.html_url }}

この自動投稿のaction-slack-notifyでは、使用可能な環境変数にクエストのタイトルやURLを指定することができません。そのためメッセージ内容にタイトルとURLを含めるようにしました。

実際に作成したサンプルのクエストと、そのクエストを作った時のBotによる投稿例は以下の通りです。

クエストのサンプル作成

クエスト新規追加時のSlack自動投稿例

おわりに

GitHub Actionsを使用してクエストのお知らせを自動化しました。 小さい改善対応ではありますが、手動で行っていた作業を自動化することで、開発メンバーの負担を減らすことができました。 今後もこのような改善を積み重ね、より効率的な開発を目指していきます。


マネーフォワード福岡開発拠点では、エンジニアを募集しています!

求人情報はこちら。

hrmos.co

福岡開発拠点のサイトはこちら。

fukuoka.moneyforward.com