定期的な処理を GitHub Actions で行う話
何かの処理を定期的に実行したい、そんなこともあるでしょう。プログラマであれば。
過去には Launchd
で MacBook から定期的に Slack メッセージをポストしたりしていた。これには概ね満足していたけど、いくつか気になる点もあった。
- 手元の MacBook で
Launchd
が動いているため、マシンを落としていると処理を実行できない - 複数の MacBook があると、どこの
Launchd
に何を設定したか管理しづらい
これを克服するため GitHub Actions を cron サーバーのように運用することにした。
GitHub Actions は on.schedule.cron
で起動タイミングを設定できる。この機能を使い、任意のタイミングで任意のコマンドを実行できる。GitHub Actions は (障害が起きていない限り) 常に利用可能なので、MacBook の Launchd
より高い可用性を期待できる。
ひとつ設定時にはまったのは、GitHub Actions の最短の実行間隔が 5 分だということだ。ドキュメントにはこう書かれている。
The shortest interval you can run scheduled workflows is once every 5 minutes.
つまり cron: '*/2 * * * *'
のようには書けない。僕は試行錯誤のために毎分 GitHub Actions をトリガーしようと思ったが、うまくアクションが動かずに「あれーなんでだろう...」となってしまった。