CircleCI

CircleCI上で日本時間を扱う

問題

CircleCI上では何もしないと協定世界時 (UTC)を取ってしまうので、9時間ほどの時間がズレてしまいます。 ちょっとハマったので日本時間で扱える方法を調べました。

結論

結論からいうとそのStepが実行される時にTZ=/usr/share/zoneinfo/Asia/Tokyoとなるようにするだけです。次の4つの方法で対処できます。

Jobに環境変数をセット

個人的に1番楽なのはこれだと思うので覚えるならこれです。 実行タイプがdockerでもmachineでもどちらでも1回書くだけでいけます。

# executer type is Docker
docker:
  - image: buildpack-deps:trusty
environment:
  TZ: /usr/share/zoneinfo/Asia/Tokyo

# executer type is Machine
machine: true
environment:
  TZ: /usr/share/zoneinfo/Asia/Tokyo

Containerに環境変数をセット

- image: circleci/node:10
  environment:
    TZ: /usr/share/zoneinfo/Asia/Tokyo

現在のStapだけで有効な環境変数としてセット

- run:
    name: Hello
    command: echo hello
    environment:
      TZ: /usr/share/zoneinfo/Asia/Tokyo

実行ファイルの前につけて

- run: TZ=/usr/share/zoneinfo/Asia/Tokyo node <script-file-path>

設定ページからEnvironment設定する方法でもできるかなと思いましたが、隠すものでもなく毎回設定するのは多分ないだろうなという理由で調べてません。