🐙

GitHub でブランチの削除をトリガーに何かを実行する

2020/09/17に公開

やりたいこと

  • GitHub で、ブランチの削除をトリガーに特定の処理を走らせたいと思いました。

実現方法

  • GitHub Actions で、ブランチの削除をフックできるらしいので GitHub Actions でやってみました。

GitHub Actions の設定

以下のような設定をしてみました。

https://github.com/mdoi/branch-delete-hook

name: do something when branch is deleted

on:
  delete
    
jobs:
  delete_hook:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Run an one-line script
        run: |
          echo Run only when branch "test/*" is deleted
        if: startsWith(github.event.ref, 'test/')
  • delete をフックに GitHub Action を実行する。
    • on に delete を指定する。
  • また、自分の場合は特定のブランチの削除で処理を実行したかった。
    • ただ、delete に branches のフィルタが記述できなさそうだった。
    • ワークアラウンドとして、実行したい処理 (run) を条件付きで実行するようにした。
      • delete はコンテキストが master ブランチになるようなので、github.event.ref で削除されたブランチ名を取得した
      • ↑で取得したブランチ名を if の中で contains とか startsWith を利用して、ブランチのフィルタをかけた。

問題点

  • どのブランチの delete でもジョブ自体は起動してしまうので、 GitHub Actions の時間を無駄に使ってしまうのが今ひとつだと思っています。

Discussion