GitHub Actions の cron で指定できるスケジュールのタイムゾーンはUTC

2022/09/06

タイムゾーン周りで混乱したので自分用メモ、UTC なので日本で 21 と書いても 21 時には実行されない
ドキュメントにも UTC だと書いてる

You can schedule a workflow to run at specific UTC times using POSIX cron syntax.

日本時間で実行するためには9時間マイナスにする必要がある
21 時に動かしたいなら 12 と書く必要がある
タイムゾーン周りは一度ハマると抜け出しにくい


以下は実際に動かして確認した内容
というのもスケジュール指定を誤って何度も PR を出してしまったから反省の意味を込めて1から確認をした

サクッと Debian イメージで試してみる

後々 GitHub Actions で動かす用で date コマンドで出力する

$ docker pull debian
$ docker run --name debian -it debian /bin/bash
# date "+%Y/%m/%d %H:%M:%S"
2022/09/05 12:40:20
# TZ=JST-9 date "+%Y/%m/%d %H:%M:%S"
2022/09/05 21:40:51

GitHub Actions で動かしてみる

下記 Workflow を作成して動かしてみた

---
name: Check Schedule Cron

on:
  workflow_dispatch:
  schedule:
    - cron: '*/15 * * * *'

jobs:
  build:
    name: echo
    runs-on: ubuntu-latest
    steps:
      - run: echo "check schedule cron"
      - run: date "+%Y/%m/%d %H:%M:%S"
      - run: TZ=JST-9 date "+%Y/%m/%d %H:%M:%S"

こんな感じで出力を確認できた

Run echo "check schedule cron"
  echo "check schedule cron"
  shell: /usr/bin/bash -e {0}
check schedule cron

Run date "+%Y/%m/%d %H:%M:%S"
  date "+%Y/%m/%d %H:%M:%S"
  shell: /usr/bin/bash -e {0}
2022/09/05 17:22:55

Run TZ=JST-9 date "+%Y/%m/%d %H:%M:%S"
  TZ=JST-9 date "+%Y/%m/%d %H:%M:%S"
  shell: /usr/bin/bash -e {0}
2022/09/06 02:22:55

JST <-> UTC

完全に自分用
困ったらこの表をみる

JST UTC
2022/09/06 00:00:00 2022/09/05 15:00:00
2022/09/06 01:00:00 2022/09/05 16:00:00
2022/09/06 02:00:00 2022/09/05 17:00:00
2022/09/06 03:00:00 2022/09/05 18:00:00
2022/09/06 04:00:00 2022/09/05 19:00:00
2022/09/06 05:00:00 2022/09/05 20:00:00
2022/09/06 06:00:00 2022/09/05 21:00:00
2022/09/06 07:00:00 2022/09/05 22:00:00
2022/09/06 08:00:00 2022/09/05 23:00:00
2022/09/06 09:00:00 2022/09/06 00:00:00
2022/09/06 10:00:00 2022/09/06 01:00:00
2022/09/06 11:00:00 2022/09/06 02:00:00
2022/09/06 12:00:00 2022/09/06 03:00:00
2022/09/06 13:00:00 2022/09/06 04:00:00
2022/09/06 14:00:00 2022/09/06 05:00:00
2022/09/06 15:00:00 2022/09/06 06:00:00
2022/09/06 16:00:00 2022/09/06 07:00:00
2022/09/06 17:00:00 2022/09/06 08:00:00
2022/09/06 18:00:00 2022/09/06 09:00:00
2022/09/06 19:00:00 2022/09/06 10:00:00
2022/09/06 20:00:00 2022/09/06 11:00:00
2022/09/06 21:00:00 2022/09/06 12:00:00
2022/09/06 22:00:00 2022/09/06 13:00:00
2022/09/06 23:00:00 2022/09/06 14:00:00

余談

TimeZone を指定できるようにして欲しい Discussion があったので↑押した

https://github.com/community/community/discussions/13454

参考


Profile picture

Written by @honyanya web developer.
Twitter

© 2022. @honyanya