📝

【GitHub Action】一定の時間間隔ごとに実行するときのメモ

に公開

はじめに

GitHub Actionの定期実行を設定するときに、若干はまったので備忘録として書きます。

一定時間間隔で実行

公式ドキュメント(ワークフローをトリガーするイベント - GitHub Docs)に従って、cron構文で以下のように設定しました。

on:
  schedule:
    - cron: "5 * * * *"

GitHubにpushして、5分待っても動かず。。
サーバー側が重たいのかなとしばらく待つと1回だけ、実行していました。
実行した時刻は○○時5分でした。

再度ドキュメントを調べると「ステップ値」というものがありました。

20/15 * * * * では、20 分から 59 分までの間で、15 分おきに実行します (20 分、35 分、50 分)。

こちらに沿って以下のように設定するとうまく動きました。

on:
  schedule:
    - cron: "*/5 * * * *"

公式ドキュメント(日本語版)の演算子の説明は以下の通りです。

演算子 説明
* 任意の値 15 * * * * では、毎日、毎時、15 分ごとに実行します。
, 値リストの区切り文字 2,10 4,5 * * * では、毎日、午前 4 時および 5 時の、2 分および 10 分に実行します。
- 値の範囲 30 4-6 * * * では、午前 4 時、5 時、6 時の、30 分に実行します。
/ ステップ値 20/15 * * * * では、20 分から 59 分までの間で、15 分おきに実行します (20 分、35 分、50 分)。

私はこの表を見て、「なるほど、5 * * * *と設定すれば、毎時5分ごと実行されるんだ~」と思ってしまいました。
(その場合だとステップ値が存在する意味がなくなってしまいますね。。)
ちゃんと最後まで読まないといけないですね。。

まとめ

  • cron: "5 * * * *"は毎日、毎時5分に実行
  • cron: "*/5 * * * *"は5分ごとに実行

このぐらいならChatGPTで一発で解決するなと調べた後に気づきました。。
良い具合に活用していきたいですね。。

参考文献

ワークフローをトリガーするイベント - GitHub Docs

Discussion