GitHub Actionsでワークフローのスケジュール実行
cron構文を使用したワークフローの実行
POSIX クーロン構文を使用して、特定の UTC 時間にワークフローを実行できるようスケジュール設定できます。 スケジュールしたワークフローは、デフォルトまたはベースブランチの直近のコミットで実行されます。 スケジュールされたワークフローを実行できる最短のインターバルは5分ごとです。
1 | on: |
よくあるcron設定。
1 | ┌───────────── 分 (0 - 59) |
注釈: GitHub Actions は、非標準的構文 (@yearly、@monthly、@weekly、@daily、@hourly、@reboot) をサポートしていません。
深夜2時にワークフローを実行する例
ワークフロー例
1 | on: |
UTC時間に注意
GitHub ActionsでScheduleに使用できるcronはUTC時間で実行されるので、JST(+9:00)との差を考慮して設定が必要。
crontab guru を使うと、クーロン構文の生成および実行時間の確認に役立ちます。 また、クーロン構文の生成を支援するため、crontab guru のサンプルリストもあります。
GitHubのリファレンスで紹介されているcrontab.guruが使いやすい。
実行時のタイムアウトを設定する
GitHub Actionsのプライベートリポジトリでの制限時間枠を浪費しないため、深夜に起動したジョブが終了しない場合のタイムアウトを設定する。
jobs.
.steps.timeout-minutes
プロセスがkillされるまでにステップが実行できる最大の分数。jobs.
.timeout-minutes
GitHubで自動的にキャンセルされるまでジョブを実行する最長時間 (分)。 デフォルト: 360
デフォルトではjob全体でのtimeout-minutes
は360分が設定されている。
Jobの実行結果をもとに適当な値を設定する。
タイムアウトするとジョブはキャンセルされる