Github Actions を定刻に実行する方法

2023/01/10に公開

schedule トリガーを用いた方法 👎

Github Actions を定刻に実行する方法としては、schedule トリガーを利用する方法が一般的かと思います。

.github/workflows/scheduled.yaml
on:
  schedule:
    # * is a special character in YAML so you have to quote this string
    - cron: "30 5,17 * * *"

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

定刻に実行できるような Workflow も探してみましたが、GithubActions を実行したまま待機するなど、力技のものしか見つかりませんでしたので、外部サービスと連携して実現することにしました。

repository_dispatch トリガーを用いた方法 👍

こちらは Github の Webhook を外部から呼び出した際に発生するイベントです。

.github/workflows/webhooks.yaml
on:
  repository_dispatch:
    types: [on-demand-test]

https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#repository_dispatch

cron-job

無料で利用でき、任意のタイミングで http リクエストを送信できるサービスです。

https://cron-job.org/en/

こちらのサービスから Github の Webhook へ http リクエストを送信します。

サクッと登録して、Cronjob を作っていきます。

cron-job-1.png

  • Title: <任意>
  • URL: https://api.github.com/repos/<repository-owner>/<repository-name>/dispatches
  • Execution schedule: <任意>

cron-job-2.png

  • Headers
    • Accept : application/vnd.github+json
    • Authorization : Bearer <personal-access-token>
    • X-GitHub-Api-Version : 2022-11-28
  • Advanced
    • Time zone : Asia/Tokyo
    • Request method : POST
    • Request body: {"event_type":"on-demand-test"}

スケジュールには、毎日/月/年だけでなく、曜日指定もできるので、日/月次処理だけでなく、週次処理も実行できそうです 💡

GitHubで編集を提案
株式会社ナンバーフォー

Discussion