やりたいこと
- GitHub で、ブランチの削除をトリガーに特定の処理を走らせたいと思いました。
実現方法
- GitHub Actions で、ブランチの削除をフックできるらしいので GitHub Actions でやってみました。
GitHub Actions の設定
以下のような設定をしてみました。
.github/workflows/main.yml
name: do something when branch is deleted
on:
delete
jobs:
delete_hook:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run a 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 の時間を無駄に使ってしまうのが今ひとつだと思っています。