はじめに
こんにちは。 マネーフォワード福岡開発拠点でSREとして働いているM-Yamashita です。
今回の記事は、GitHub Actionsを使ったSlackへの自動投稿の話です。
現在、クラウド経費・クラウド債務支払サービスの開発においてクエストという制度を採用しています。クエストを新しく作成するたび、開発メンバーに知らせるために手動で都度Slackに投稿していました。この手動作業を自動化した話をお伝えします。
クエストとは
経費・債務支払サービスでは開発ロードマップに沿って日々開発を進めています。この開発と並行して、内部改善をしていくことも重要です。 弊社ではそのような内部改善を推進する制度として、クエストという制度を導入しています。クエストとは、誰かにしてほしいことをまとめた「依頼」です。受ける人にとっては、業務の合間にチャレンジする「課題」です。
クエストはGitHubのIssueとして作成され、依頼内容や難易度のレベル、クリアランクが設定されます。また他のIssueと区別するために、クエスト作成者はex_quest
というラベルをIssueに設定します。
クエストの一例:
課題
クエストは誰にでも作成できるのですが、その新規クエストを開発メンバーに知らせる必要があります。今まではクエストを作成した人やクエストを管理している人が、都度Slackに手動で投稿していました。
ちょっとした投稿ではあるものの、クエストを作るたびにそのIssueのURLをコピーしてSlackに貼り付けてお知らせを毎回投稿する作業は手間がかかります。 そのため、この手間をなくすためにGitHub Actionsを使ってBotによる自動投稿を行いました。
GitHub Actionsによる投稿の自動化ワークフロー
自動化に際し、ワークフロー実行のトリガーの検討を行いました。単純なIssue作成の検知では、他のIssueを誤検知してしまいます。そのため、クエストのラベルがIssueに付与されたことをトリガーにしてワークフローを実行するようにしました。
また、Slackへの投稿機能はGitHub Actionsのデフォルト機能に存在しないので、MarketplaceにあるActionを使う必要があります。
今回のSlackへの投稿を満たせそうなActionを探したところ、以下のActionを発見しました。 このActionはスター数が多く、メンテナンスも続いており良さそうと判断し、ワークフローに取り込みました。
作成したワークフローは次のとおりです。
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による投稿例は以下の通りです。
おわりに
GitHub Actionsを使用してクエストのお知らせを自動化しました。 小さい改善対応ではありますが、手動で行っていた作業を自動化することで、開発メンバーの負担を減らすことができました。 今後もこのような改善を積み重ね、より効率的な開発を目指していきます。
マネーフォワード福岡開発拠点では、エンジニアを募集しています!
求人情報はこちら。
福岡開発拠点のサイトはこちら。