Lento con forza

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

Action ButtonでDeploymentに対応しました

ちょっと前にGitHub Actionsをデプロイに使いたいけどデプロイタイミングは自分で選びたかったのでこんなものを作りました kouki.hatenadiary.com

ここで使ったrepository_dispatchイベントはとりあえずActionを走らせるためには便利なのですが、イベントで使われるブランチを選択できなかったりと、少し使い勝手の悪いものでした。

Actionsで使えるイベントとして、repository_dispatchの他にDeploymentsがあります。

これはGitHub Actionsのために作られたものではなく、ずっと前からあるAPIなのですが、GitHub Actionsのトリガーとして指定可能です。また、Deployment発火時にブランチやタグなどを指定することができ、様々なユースケースに耐えうるものとなっています。

GitHub Actionsの登場により、先ほどのリンクにもあるこの図の3rd Partyの部分にGitHub Actionsを利用できるようになりました。1st Partyの提供する3rd Partyのような感じになってしまいますね。

+---------+             +--------+            +-----------+        +-------------+
| Tooling |             | GitHub |            | 3rd Party |        | Your Server |
+---------+             +--------+            +-----------+        +-------------+
     |                      |                       |                     |
     |  Create Deployment   |                       |                     |
     |--------------------->|                       |                     |
     |                      |                       |                     |
     |  Deployment Created  |                       |                     |
     |<---------------------|                       |                     |
     |                      |                       |                     |
     |                      |   Deployment Event    |                     |
     |                      |---------------------->|                     |
     |                      |                       |     SSH+Deploys     |
     |                      |                       |-------------------->|
     |                      |                       |                     |
     |                      |   Deployment Status   |                     |
     |                      |<----------------------|                     |
     |                      |                       |                     |
     |                      |                       |   Deploy Completed  |
     |                      |                       |<--------------------|
     |                      |                       |                     |
     |                      |   Deployment Status   |                     |
     |                      |<----------------------|                     |
     |                      |                       |                     |

こちらのDeployments APIもrepository_dispatchと同様に、Web UIで発行できるものをGitHubが用意していないので、Action Buttonで対応できるようにしました。

こちらからお好きなリポジトリのDeploymentを発火するボタンを作れます。

Action Button

f:id:kouki_dan:20200229013920p:plain

もちろんGitHub Action Buttonのサービス自体のデプロイにもこのボタンを使っています github.com

f:id:kouki_dan:20200229014118p:plain

Deploymentの場合はボタンをクリックすると以下のような画面に遷移し、パラメータを書いた後、ボタンを押せばDeploymentイベントが発火されます。

f:id:kouki_dan:20200229014647p:plain

基本的に自分で使うために作っているので、所々雑なのですが、何かしらの方法で連絡してもらえると直すかもしれません!よろしくお願いします!!Pull Requestsもお待ちしています!!*1

*1:と言いつつ、動けばいいやの精神で作ってるので本当にPull Requestくれる人がいたら焦ってリファクタしまくります