GitHub Actionsのスケジュール実行を試してみた

はじめに

この記事では、「GitHub Actionsのスケジュール実行の概要」について書いています。

GitHub Actionsは様々なことを自動で行わせることができる便利な機能で、色々使えるようになりたいと思ったのが記事を書いたきっかけでした。

自分に向けた備忘録の意味もありますが、「GitHub Actionsで定期的に処理を実施させたい」「GitHub Actionsでスケジュール実行させたい」な人の一助になれば嬉しいです。

スケジュール実行の方法

時間を指定して実行する

Github Actionでスケジュール実行をさせるには、scheduleというトリガーイベントを利用します。

例えば以下のように記述します。

on:
  schedule:
    - cron:  '30 5,17 * * *'

cron:の後にどんなタイミングで実行させるかを記述します。

文字列は頭から'(分) (時) (日) (月) (曜日)'と並んでいます。

曜日は0(日曜日)-6(土曜日)の数値を使って指定します。

値は何でも良い場合、*を書きます。

また、複数の値を書きたい場合は,を使います。

例えば上の例では「5:30と17:30にイベントを実行する」ことになります。

ある時間間隔でイベントを実行したい

「〇時〇分に実行したい」ではなく「〇分おきに実行させたい」という人もいるかと思います。

これも実現することができ、以下のように書きます。

on:
  schedule:
    - cron:  '*/8 * * * *'

上の記述だと8分おきに実行されます。

試してみた

実際にスケジュール実行を試してみました。

コードは以下の通りです。

name: learn-github-actions

on:
  schedule:
    - cron:  '*/8 * * * *'

jobs:
  check-bats-version:
    runs-on: ubuntu-latest
    steps:
      - run: echo "this is pen"
      - run: echo "this is apple"

8分おきに適当な文字列を出力するだけです。

ymlファイル作成し、しばらく時間を置いてから実行結果を確認したところ、自動で実行されていたようです。

注意点

  • タイミング実行について、精度はそこまで良くないみたいなので、厳密さを求めてる場合は注意が必要です。私の上の実験でも8分おきに設定しましたがあまり正確ではありませんでした。
  • ymlファイルをコミットしてから実際にタイミング実行されるにはそこそこ時間差があるようです。はじめ20分近く待っても何も実行されずに悩んでいましたが、離籍し数時間後にまた確認してみたところ実行されていたので30分とか1時間くらい反映に時間がかかるのかもしれません。
  • GitHub Actions のワークフローの実行によって高い負荷がかかっている間、イベントが遅延する可能性があるようです。
  • スケジュールされたワークフローを実行できる最短の間隔は、5 分ごとに 1 回のようです。

おわりに

GitHub Actionsのスケジュール実行の概要」について解説しました。

さいごに、記事を書く上で参考にしたサイトのリンクを以下に掲載します。合わせて読んでいただくと良いかと思います。

gotohayato.com

qiita.com

https://docs.github.com/ja/actions/using-workflows/events-that-trigger-workflows#schedule