/var/www/yatta47.log

/var/www/yatta47.log

やったのログ置場です。スクラップみたいな短編が多いかと。

GitHub Actionsで11時と23時にschedule実行する

GitHub Actionsのscheduleを使って定期実行を考えていて調べたことを書き残しておく。

定期実行について

定期実行はonschedule のブロックの中にcron式を書けば実行できます。

以下の例では0時と12時に実行されます。

name: Scheduled Workflow
on:
  schedule:
    # UTCで毎日の00:00と12:00に実行します
    - cron: '0 */12 * * *'

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

11時と23時に実行するには?

11時からスタートして12時間後にスタートする場合は'0 23,11 * * *'のように記載します。

name: Scheduled Workflow
on:
  schedule:
    # UTCで毎日の23時と11時に実行します
    - cron: '0 23,11 * * *'

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    # その他のステップを定義します

 

他の書き方はないのか?

上記の書き方だと、自分で計算を頑張った感があって、別の書き方がないのかとGitHub Actionsのcron式を改めて確認してみました。

docs.github.com

公式文書を見る限り、Linuxでよく使うcronの書き方と変わらないように見えるので、以下の書き方でもOKのようです。

name: Scheduled Workflow
on:
  schedule:
    # UTCで毎日の23時と11時に実行します
    - cron: '0 11-23/12 * * *'

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    # その他のステップを定義します

意味合い的には、11:00から23時の間で12時間間隔でという意味になります。

作成したcron記述があっているのかは上記ページでも紹介されていた、crontab.guruが便利です。

特にnextを押すことでいつ実行されるのかをみれるのが便利ですね。

 

まとめ

cronの書き方もいろいろあるので、どれも正解なのかなと思います。

crontab.guruは知らなかったのでこのサイトを知れたのは地味にいい収穫でした。

それではまたー。