gotohayato.com

月(ダークモード)
太陽(ライトモード)

GitHub Actions ワークフローで処理を定期実行する方法

GitHub

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 build
on:
schedule:
# 月曜日の 11:00 (JST) に処理を実行する。
# UTC の 02:00 は JST だと 11:00 。
- cron: '0 2 * * 1'
jobs:
build:
name: build
runs-on: ubuntu-latest
steps:
- name: curl
run: curl --show-error -X POST -d {} "${{ secrets.BUILD_HOOK_URL }}"

# で始まる行はコメントです。 name の値は処理には影響しないので、自分(たち)がわかりやすい値をセットして使うとよいと思います。 記事執筆時点では runs-onubuntu-latest を選べば前準備なしで curl が使えました。 secrets.BUILD_HOOOK_URL の値は該当するリポジトリのページから Settings → Secrets と行ってセットすれば OK です。

注意点

GitHub Actions の schedule イベントは、 GitHub Actions ワークフローの実行の負荷が高いときに遅れることがあるのでその点に注意が必要です。

Note: The schedule event can be delayed during periods of high loads of GitHub Actions workflow runs. High load times include the start of every hour. To decrease the chance of delay, schedule your workflow to run at a different time of the hour.

個人的な経験ではワークフローの開始が 20 〜 30 分ほど遅れることはざらなので、そのぐらいの遅れが問題になるような用途に使うことはおすすめしません(ちなみに、 GitHub のプランは Team プランを使っています)。

参考

以下すべて公式ドキュメントです。

関連記事


hg

後藤隼人 (ごとうはやと)

ウェブ制作・開発やマーケティング、プロジェクト支援などをしています。

githubpython

お知らせ

東北大学大学院医学研究科さんが 9 月 30 日まで膵臓がん研究のクラウドファンディングをされています(後藤も少しだけ寄附させていただきました)。
© 2021 gotohayato.com
サイトについてタグアーカイブメッセージを送る