GitHub ActionsをSlack Botから起動する

だいぶ前に書いていたのだがブログに書き忘れていた。

ペパボではGitHub Enterpriseを @hsbt を中心に運用しています。

こんなことがありながらも、僕もたまにあれこれやっていて、上記の件はおそらくタイムゾーンの問題が別であったのでそれに起因して起きているんじゃないか?と言ったら調べるわーって状態になりました。

さて、そんなペパボではGitHub Enterpriseでも絶賛GitHub Actionsを活用しているのですが、アプリケーションの自動テスト、デプロイをはじめ、いわゆるコンテナジョブプラットホームとしてもActionsはとても優秀なので色々活用しています。そのなかで通常のpushやscheduleだけではなく、任意のパラメーターで任意のタイミングでジョブが実行したかったものですから、作りました。

こんな感じでジョブを実行することができます。

仕組みとしてはActionsの repository_dipatch を利用しています。

on:
  repository_dispatch:
    types: [deploy]

こんな感じでActionsに定義しておくと、

@actions-bot <repo>/<org> <type name> <key:value>...

のようにSlackから任意のタスクを任意のパラメーターで実行することができます。

パラメーターはActionsの定義内で下記のように取得できます。

"${{ github.event.client_payload.<key> }}"

お手元で利用いただく際には、Slackのアプリトークンを払い出して、チャンネルの投稿権限だけ与えて、リポジトリ内のマニフェストを参考に実行してもらえればすぐにお試しいただけると思います。

Actions、コンテナで実行環境をパッキングしたジョブ基盤としてめちゃくちゃ便利なので、おもしろい仕組み今後もいっぱい作りたい。