@kyanny's blog

My life. Opinions are my own.

初めての GitHub Actions

イシューに特定のラベルがついたら Slack に通知、というワークフローを作ってみた。ビルトインのアクションの組み合わせのみでできた。 labels (配列)を表示するところがちょっとトリッキー。

gist.github.com

これの応用で、 scheduled トリガーを起点にして特定のラベルがついてるイシューの一覧を Slack に通知、というのをやりたいのだが、こちらはビルトインのアクションだけで実現するのは厳しそうだった。

特定のラベルがついてるイシュー一覧をとるのは GraphQL アクションでも、 HTTP アクションでも、 GitHub API 叩けばいける。 Slack 通知もビルトインのアクションでいける。問題は、上流のアクションで得た結果データを下流のアクションに渡すところで、ビルトインの Slack アクションは任意のデータを受け取るようにはできてないので、間を繋ぐアクションを自前で書かないといけない。そこ書くなら全部書いてもたいして労力変わらない。むしろパーツ組み合わせるぶん複雑度が増してメンテがつらそう。

action-slackGITHUB_EVENT_PATH を JSON.parse してそのデータを Slack メッセージ構築時のテンプレート埋め込み用変数として使え、 github-graphql-action はクエリ結果の JSON をはくパスを変更できるので、 GITHUB_EVENT_PATH に置いてある event.json を上書きすれば辻褄が合いそうだけど、行儀悪そうで気が引ける。