ActionsでSlackに通知を飛ばそうTECHアドベントカレンダーソフトウェアエンジニアインターンのhiroです。Actionsで試しに使ってみました。やりたいことGitHub上で管理しているドキュメントに重要な変更があった際、定期的なチェックをしていないとうっかり見逃してしまうことも考えられます。Actionsの出番です。リポジトリにpushやプルリクエストなどのイベントが発生した時に、定義したワークフローに従ってCI/CDなどが実行出来る優れ物です。特定のチャンネルに通知されるワークフローを作ってみたいと思います。いうチャンネルに対して配信する想定です。今回ワークフローを構成するリポジトリの構造は以下の通りです。ワークフローは.github/workflowsディレクトリでYAMLファイルを用いて定義できます。Marketplaceから対応するActionを探します。ActionとはGitHubや外部ツールのAPIを活用するプラグインのようなものと捉えていただければいいと思います。Marketplaceではコードレビュー用のツールやクラウドサービスへのデプロイ、各種チャットサービスとの連携など、様々な種類のActionが用意されており、それらをワークフローを定義するYAMLファイルから簡単に参照することができます。今回は、Slackと連携をするためにpullreminders/slack-actionを使おうと思います。ここからはこのActionのセットアップ手順に沿って進めていきたいと思います。Slack側で行う事前準備こちらのActionを使う為には、まずはSlackに投稿するためのbotユーザーを通知する対象のSlackで登録する必要があります。Token”を取得します。(xoxb-で始まる文字列)GitHub側で行う事前準備Slackで取得したアクセストークンを暗号化されたシークレットとしてとしてGitHubのリポジトリに登録します。リポジトリのSettings→Secretsに行き、アクセストークンを登録してください。ここでは登録するシークレットの名前をSLACK_BOT_TOKENとします。YAMLを書く準備が整ったところで、upload.yamlに以下のコードを書きます。}}スキーマを知らない方でも、なんとなくやっていることは分かるのではないでしょうか。基本的にはon:でワークフローを走らせるためのトリガーを指定して、jobs:で実際のワークフローを構築する流れになります。ここで気をつけるべき点は以下の通りです。onでトリガーとして使用できるイベントは様々です。watchなど、リポジトリに起こり得るイベントであれば大抵ハンドルできます。使用できるイベントはこちらで定義されています。argsはSlackのAPIで指定されているJSONで、ここで自由にメッセージの中身を変更できます。args内のchannelでチャンネル固有のIDを指定する必要があります。ID}/で取得できます。細かい仕様はこちらのドキュメントを参照していただけると良いと思います。それでは、実際に走らせてみましょう。完成したコードをpushします。ワークフローの状況はリポジトリのActionsタブで確認できます。ActionsでリポジトリとSlackを連携してみました。リポジトリ単位でワークフローを定義・実行できるのは非常に強力で、使い方次第では開発の心強い味方になりそうです。