본문 바로가기
github

GitHub Actions에 타임존 지원 추가됐다 — UTC cron 계산 이제 그만

by bamsik 2026. 3. 23.
반응형

GitHub Actions 쓰면서 cron 스케줄 설정할 때 가장 불편했던 게 뭔지 아는가? UTC로만 시간을 지정해야 했던 거다.

한국 기준 오전 9시에 돌리고 싶으면 UTC로 계산해서 0 0 * * * 이런 식으로 넣어야 했다. 서머타임 있는 나라는 더 복잡했다. 그 문제가 이번에 드디어 해결됐다.

GitHub Actions에 타임존 지원이 추가됐다

2026년 3월 GitHub Actions 업데이트에서 scheduled workflow에 IANA 타임존을 직접 지정할 수 있게 됐다. 기존에는 cron 표현식이 무조건 UTC 기준으로만 동작했는데, 이제 timezone 필드를 추가하면 원하는 지역 시간 기준으로 실행된다.

설정 방법은 간단하다:

on:
  schedule:
    - cron: '0 9 * * 1-5'
      timezone: 'Asia/Seoul'

이렇게 하면 한국 시간 기준 평일 오전 9시에 워크플로우가 실행된다. UTC 변환 계산은 이제 안 해도 된다.

왜 이게 중요한가

단순히 편의 문제만이 아니다. 서머타임(DST)이 있는 국가의 경우, 기존 UTC cron은 서머타임 전환 시점마다 실제 현지 시간이 달라졌다. 예를 들어 뉴욕 기준 오전 9시에 맞추려면 UTC -5(겨울), UTC -4(여름)를 각각 따로 관리해야 했다.

이제 timezone: "America/New_York" 하나만 넣으면 서머타임 관계없이 현지 시간 기준으로 자동 처리된다.

같이 추가된 기능: deployment 없는 environment 사용

이번 업데이트에서 또 하나 유용한 게 추가됐다. 지금까지 GitHub Actions에서 environment를 지정하면 자동으로 deployment가 생성됐다. 그냥 secrets/variables 관리 용도로 environment만 쓰고 싶은데 불필요한 deployment 기록이 계속 쌓였다.

이제 deployment: false 옵션으로 이걸 막을 수 있다:

jobs:
  build:
    environment:
      name: production
      deployment: false

이렇게 하면 environment의 secrets와 variables는 쓸 수 있지만, deployment 이벤트는 생성되지 않는다. 배포 히스토리를 깔끔하게 유지하고 싶을 때 유용하다.

써보니 어떤가

타임존 기능은 사실 오래 기다린 기능이다. n8n이나 다른 자동화 툴에서는 진작에 타임존 지원이 됐는데, GitHub Actions는 왜 이렇게 늦었나 싶었다. 뒤늦게라도 나와서 다행이다.

실제로 적용해봤더니, 기존 UTC cron 값 그대로 두고 timezone 필드만 추가하면 되니까 기존 워크플로우 마이그레이션도 어렵지 않다. 다만 IANA 타임존 이름을 정확히 써야 한다는 점 주의 — Asia/Seoul은 되는데 KST는 안 된다.

아쉬운 점

한 가지 제한이 있다. custom deployment protection rule을 쓰는 경우에는 deployment: false를 사용할 수 없다. custom protection rule이 있으면 environment는 무조건 deployment와 함께 동작해야 한다. 복잡한 배포 파이프라인을 쓰는 팀은 이 점 확인하고 적용해야 한다.

아무튼 작은 기능들이지만 실무에서 매일 쓰는 부분이라 체감되는 개선이다. 특히 글로벌 팀 운영하거나 한국 업무 시간 기준 자동화 설정하는 분들한테는 반가운 업데이트다.


📎 참고 자료

반응형