Lento con forza

大学生気分のIT系エンジニアが色々書いてく何か。ブログ名決めました。

GitHub Actionsをクリックして発行できるGitHub Appsを作った

GitHub Actionsがマイブームです。とても便利なGitHub Actionsですが、「ボタンを押してデプロイ」のようなことができないのが不便でした。

5分待てば公式のものができると思いつつ、なかなか出ないので作ってしまいました。

作ったもの

Action Buttonというサービスを作りました。 リポジトリはこちらです

GitHub Actionsのトリガーには外部イベントをトリガーとする repository_dispatch というものがあります。 ワークフローをトリガーするイベント - GitHub ヘルプ

任意のリポジトリに対し、この repository_dispatch を発行するボタンを作りました。 Action Buttonで作ったボタンをGitHubのREADMEに設置することで「ボタンを押してデプロイ」のようなことが実現できるようになります。

使い方

Action ButtonはGitHub Appsとして動きます。また、repository_dispatchを発行するためにユーザーのOAuthトークンを利用するため、OAuth認可をする必要もあります。

  1. まずは以下のリンクからボタンを設置したいリポジトリに対しAction Buttonをインストールします
  2. 以下のリンクからサインインし、ボタンを設置するリポジトリを探します
  3. 実行したい名前と、実行したいActionのevent_typeを指定しボタンのマークダウンを生成します
    • Event Typeは動かしたいActionを絞り込むために使う必須パラメータです。
    • Actionのymlではこのように指定します。これはEvent Typeに deploy と指定したボタンでのみ動作します
  4. 生成したマークダウンテキストをコピペし、READMEなどに貼り付けます
  5. write権限のあるユーザーがGitHubからこのボタンをタップすることで自動的にディスパッチイベントが発行されます
    • ボタンをタップするとAction Buttonのイベントを発行するページへと遷移します。
    • GitHubの該当するリポジトリをリファラーに持つ場合は自動的にイベントを発行するようにしています
    • 他のリファラをURLに持つ場合はボタンが表示されるので、それをクリックすることでイベントを発行できます

準備のステップ数は多いですが、一度セットアップすればボタンをクリックするだけでデプロイできてとても便利です(Action ButtonのデプロイにもAction Buttonで生成したボタンを使っている)

使っている様子

デプロイしたいタイミングでREADMEをクリックします。動画にしてみました


Action Button Usage

まとめ

GitHub ActionsはGitHubのイベントを元に色々なタスクを実行できて便利な一方、任意のタイミングで実行したいタスクを記述するためには適したイベントがなく不便でした。リポジトリにある手頃なボタンとして、Starをトグルすることでイベントを発行するようなハックをしていた場合もあるみたいです。 Action Buttonではその問題を解決し、このケースに適したイベント(repository_dispatch)を簡単に発行できるようにします。masterにpushされたら毎回実行されて欲しくはないけど、cronで実行するほどでもない、そんなタスクにぜひ使ってみてください。

僕はデプロイボタンとして使っています。