以下の通りHeroku有償化に個人で運用しているbotの移行先を検討していたところ、GitHub Actionが結構よさそうだったのでメモ📝
GitHub Actionの概要とかは過去記事で記載してます。
Github Actionの価格
以下の通り 2022/09/04 時点では無料アカウントでも500MBのストレージと2000分の実行時間が使えるようです🙏
Product | Storage | Minutes (per month) |
---|---|---|
GitHub Free | 500 MB | 2,000 |
最新の価格は以下を参照してください。
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指定ができるようになるかもしれません!
おわりに
簡単なBotであればGitHub Actionで良さそうですね🤖