Madogiwa Blog

主に技術系の学習メモに使っていきます。

GitHub Actionでスケジュール実行するworkflowを作成するメモ📝

以下の通りHeroku有償化に個人で運用しているbotの移行先を検討していたところ、GitHub Actionが結構よさそうだったのでメモ📝

blog.heroku.com

GitHub Actionの概要とかは過去記事で記載してます。

madogiwa0124.hatenablog.com

Github Actionの価格

以下の通り 2022/09/04 時点では無料アカウントでも500MBのストレージと2000分の実行時間が使えるようです🙏

Product Storage Minutes (per month)
GitHub Free 500 MB 2,000

最新の価格は以下を参照してください。

docs.github.com

Github Actionでスケジュール実行する

以下の通りon: scheduleを利用するとcronで時間を指定して実行することが出来ます。

The schedule event allows you to trigger a workflow at a scheduled time. You can schedule a workflow to run at specific UTC times using POSIX cron syntax.
https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule

以下の通り遅延することもあるので厳密に実行する必要がある場合などは注意です。

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.
https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule

以下が毎日19:00(日本時間)に実行するworkflowのサンプルです。 ※workflow_dispatchも指定して手動でも実行できるようにしてます。

name: cron

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

jobs:
  run:
    runs-on: ubuntu-latest
    env:
      TZ: Asiz/Tokyo
      TOKEN: ${{ secrets.TOKEN }}
    steps:
      - uses: actions/checkout@v2
      - uses: ruby/setup-ruby@v1
        with:
          bundler-cache: true
      - name: install ruby deps
        run: bundle install --jobs 4 --retry 3
      - name: post
        run: bundle exec ruby script.rb

時間はUTC指定になるので注意です。issueは上がっているので今後はTZ指定ができるようになるかもしれません!

github.com

おわりに

簡単なBotであればGitHub Actionで良さそうですね🤖

参考

obel.hatenablog.jp