GitHub Actions実例1 - ブランチの自動削除
前置きが長くなりましたが、いよいよGitHub Actionsの実際の利用例を紹介します。なお、GitHub Actionsのベータ版はすでに利用できる前提で解説しています。
では簡単な例としてブランチの削除というタスクを自動化してみましょう。開発フローによりますが、一般的にはPull Requestがマージされた後、特に理由がない限りそのブランチは不要になります。通常は手動でブランチを削除する必要がありますが、削除し忘れを防ぐため、このタスクを自動化してみましょう。流れとしては、以下になります。
-
新しいWorkflowを作り、
pull_requestイベントをトリガーに設定する - ブランチを自動削除するActionをWorkflowに追加する
- Workflowを保存する
たったこれだけです。なお、この例では対象リポジトリをlowply/delete-branch-testとします。ご自身で試される際は、お使いのリポジトリ名に置き換えてください。
まず、https://github.com/lowply/delete-branch-test/actionsにアクセスし、[Create a new workflow]ボタンをクリックします。

グレーの[New workflow]ボックスの[Edit]をクリックし、編集ダイアログを表示します。ダイアログ内の[Workflow name]に任意の名前を付け、[Run]プルダウンメニューからpull_requestを選択して保存します。

グレーのボックスの下部にある青いドットをマウスでドラッグし、その下の点線エリアに持っていくと、新しいActionの追加画面が表示されます。

今回はActionを自分で作成するのではなく、Jessie Frazelleさんが作成したbranch-cleanup-actionというActionを使いたいので、[Find or enter an action]欄にjessfraz/branch-cleanup-action@masterと入力します。検索結果にこのActionが表示されたら、[Use]ボタンをクリックします。なお、GitHub上のリポジトリを指定する場合は上記のように@を付けてowner/repository@masterとブランチ名まで記述してください。また、もしブランチ指定ではなく特定のコミットを指定したい場合は@4c8b444のようにコミットハッシュの先頭7桁を書いてください。

Actionのラベル名は、デフォルトで先程のステップで入力した内容が付きますが、分かりやすいものに変えましょう。ここでは「branch cleanup」としました。また、このActionはGitHub APIを実行するので、GITHUB_TOKENのチェックボックスをオンにする必要があります。以上で終わりなので、[Done]をクリックします。

この状態で[Edit new file]タブを表示すると、ビジュアルエディタで作成したWorkflowがテキストファイルとして記述されていることがわかります。

それでは最後にこのファイルをコミットしましょう。

試しに新しいPull Requestを作成してみます。

Actionsタブを確認すると、「branch cleanup」というActionが成功したことがわかります。しかし、まだこのPull Requestはマージしていません。なぜ成功してしまったのでしょうか?
実は、Pull Requestを作成した時点でpull_requestイベントが発火しWorkflowが走ります。しかし、このActionは「Pull Requestがマージされたらブランチを消す」を実現するため、スクリプト内部でmergedフラグを確認しており、今回はフラグがfalseだったため何も実行せずに正常終了したのです。

「blanch cleanup」Action内に表示されている「Log」リンクをクリックすると、このActionの実行内容を確認できます。DEBUG -> の行に、action: opened merged: falseと出力されていることがわかります。

今度は、このPull Requestをマージしてみましょう。

再びWorkflowが走りました。ログを確認すると、今度はaction: closed merged: trueとなっており、Branch delete success!が表示されているのでブランチが削除されたことがわかります。

Pull Requestの画面に戻ると、確かにgithub-actionsユーザ(bot)がブランチを削除しています。

実はこのActionについて、作者のJessie Frazelleさんが「Jessie Frazelle's Blog: The Life of a GitHub Action」という記事を書かれているので、興味がある方は是非読んでみて下さい。また、今回の実例は私のリポジトリlowply/delete-branch-testにて実際に確認できます。
