GitHub Actions ワークフローで処理を定期実行する方法
GitHub の自動化ツール GitHub Actions のワークフローを使って特定の処理を定期的に実行する方法についてです。 GitHub 公式のドキュメントに方法が書かれているのですが、情報があちこちに散っている感じなのでかんたんにまとめておきます。
schedule
トリガーイベントを使う
早速結論ですが schedule
というトリガーイベントを利用すれば OK です。
on:schedule:- cron: '0 * * * *'
cron
の値には実行時間を表す POSIX cron シンタックス ↓ の文字列を渡します。
分 時 日 月 曜日
時間指定のサンプル
cron を設定する機会が少ないので都度調べる(私のような)人のために、時間指定のサンプルをいくつかあげます(動作確認していないので間違っている可能性があります)。
毎日毎時 30 分 (UTC) に実行する:
30 * * * *
毎日 10:45 (UTC) に実行する:
45 10 * * *
3 日毎に 1 回 08:00 (UTC) に実行する:
0 8 */3 * *
毎週月曜日の 15:00 (UTC) に実行する:
0 15 * * 1
曜日指定には [0, 6]
の整数を使います。
0
が日曜日、 6
が土曜日です。
完成形のサンプル
この schedule
を使って定期的に特定の URL にリクエストをかけるには次のようにすれば OK です。
.github/workflows/scheduled-build.yml
:
name: Scheduled buildon:schedule:# 月曜日の 11:00 (JST) に処理を実行する。# UTC の 02:00 は JST だと 11:00 。- cron: '0 2 * * 1'jobs:build:name: buildruns-on: ubuntu-lateststeps:- name: curlrun: curl --show-error -X POST -d {} "${{ secrets.BUILD_HOOK_URL }}"
#
で始まる行はコメントです。
name
の値は処理には影響しないので、自分(たち)がわかりやすい値をセットして使うとよいと思います。
記事執筆時点では runs-on
に ubuntu-latest
を選べば前準備なしで curl
が使えました。
secrets.BUILD_HOOOK_URL
の値は該当するリポジトリのページから Settings → Secrets と行ってセットすれば OK です。
参考
以下すべて公式ドキュメントです。