Gihub Actionsで指定した時刻で定期的にワークフローを実行し、実質的な自動化を目指しました。公式ドキュメントにも示されていますが、今回自分が実装した方法をまとめました。
結論:Scheduleトリガーを使用する
結論から言うとSchedule
トリガーを使用することで実現することができます。
on:
schedule:
- cron: '30 20 * * *'
例えばこのコードでは、毎日20:30 UTCにワークフローが実行されます。しかし、この時刻はUTCなのでJSTとしての時間での実行を想定するのであれば9時間の時差があることに注意してください。
ちなみにここで使用するcronは実行時間を表し、「分、時、日、月、曜日」を表し、曜日の部分は0~7でsun~satを表します。また、*を使用することで、「全て」を表すこともできます。
時間指定の例
毎日10:30 UTCに実行する
30 10 * * *
毎月5日の1:00 UTCに実行する
0 1 5 * *
実際にやってみる
今回やってみたのは、定刻にbuildを実行すると言うもの。毎月5日の10:00 JSTにワークフローが実行されるように実装しました。
name: artist-sales-report
on:
schedule:
# 毎月5日の10:00 JST (01:00 UTC)に実行
- cron: "0 1 5 * *"
jobs:
build:
name: run build
runs-on: ubuntu-latest
steps:
- run: npm run build
わかったこと
実際に定期実行を実現することはできました。ただ、遅延が発生します。
原因としては、Actionsのワークフロー実行の負荷が高い時にイベントに遅延が発生するそうです。そのため、リアルタイム性を追及するようなフローへの使用は適さないと感じました。
参照
・https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule