1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【GitHubActions】指定した時間にバッチ実行したい

Posted at

はじめに

指定した時間にバッチ実行できる仕組みを習得しました。今後困らないように備忘録としてまとめました。

cronとは

UNIX系OS(Linuxなど)に標準で搭載されている定期的な自動実行を行うための仕組み

GithubActionsでcronを使う

公式ドキュメントより引用

schedule イベントを使うと、スケジュールした時刻にワークフローをトリガーできます。

cronの基本的な書き方

cron: " 時間 曜日([0,6]、0は日曜日) "

delete-data-auto.yml
name: delete-data-auto

on:
  schedule:
    - cron: "0 21 * * *"
  workflow_dispatch:

jobs:
  delete_data:
    runs-on: ubuntu-latest
    steps:
      - run: echo "cron追加したよ"

他にもこんな設定ができる

X分ごとに1回実行する

最短5分毎にスケジュール実行することが可能

公式ドキュメントより引用

スケジュールされたワークフローを実行できる最短の間隔は、5 分ごとに 1 回です。

on:
  schedule:
    - cron: "*/5 * * * *" # 5分ごとに実行

,区切りで複数時間設定可能

on:
  schedule:
    - cron: "0 21,17 * * *" # 21時と17時に実行
  workflow_dispatch:

毎時間XX:00に実行する

on:
  schedule:
    - cron: "0 * * * *" 
  workflow_dispatch:

注意点

スケジュール時間はUTC

スケジュール時間は (UTC) で設定される。
UTC:協定世界時、世界で標準時として使っている時間

UTCは日本時間(JST)から9時間引いた値
例えば、午前6時に起動したい場合、06:00から9時間引いた21:00を設定

日本時間 6:00 → UTC 21:00(前日)
計算:6 - 9 = -3 → 24 + (-3) = 21

scheduleトリガーは遅延しがち

公式ドキュメントより引用

GitHub Actions のワークフローの実行によって高い負荷がかかっている間、schedule イベントが遅延する可能性があります。 高負荷の時間帯には、毎時の開始時点が含まれます。

今後は、repository_dispatchを使うようにしたい。

おわりに

cronって聞いたことあるなあくらいの認識だったのですが、使いこなせるようになったことは大変嬉しいです。
日本時間とUTCを考慮しないといけないのは盲点でした。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?