본문 바로가기
github

GitHub Actions 최근 업데이트, 불편했던 게 몇 가지 해결됐다

by bamsik 2026. 4. 4.
반응형

GitHub Actions, 쓰다 보면 이런 게 불편하더라

GitHub Actions 꽤 오래 썼다. 처음엔 "이게 배포 자동화가 이렇게 쉬워도 되나?" 했는데, 쓰다 보면 자잘한 불편함들이 쌓인다. YAML 문법에 익숙해지는 데 시간이 좀 걸렸고, 특히 환경 변수 스코프나 캐시 관리 쪽에서 삽질을 꽤 했다.

근데 최근에 GitHub Actions가 업데이트되면서 실제로 불편했던 것들이 몇 가지 해결됐다. 직접 써보고 "이게 됐구나" 했던 것들 위주로 정리해본다.

서비스 컨테이너 entrypoint 설정 — 드디어 됐다

테스트 환경에서 데이터베이스를 서비스 컨테이너로 띄울 때, 특정 초기화 스크립트를 entrypoint로 지정하고 싶은 경우가 있다. 예전엔 이게 GitHub Actions에서 공식적으로 지원이 안 됐다. 커뮤니티에서도 "지원 안 됨"이라는 답이 대부분이었고, 워크어라운드로 따로 setup step 만들어서 처리했다.

근데 이제 서비스 컨테이너에 options 필드로 entrypoint를 직접 지정할 수 있게 됐다:

services:
  postgres:
    image: postgres:15
    options: >-
      --entrypoint /docker-entrypoint-initdb.d/init.sh

작은 변화지만, 이게 안 되면 CI 파이프라인 구조 자체를 바꿔야 했다. 자주 나오는 케이스는 아닌데, 필요할 때 없으면 꽤 답답한 부분이었다.

보안 스캐너 통합 — PR에 자동으로 달린다

GitHub이 코드 보안 스캐닝을 Actions 파이프라인에 더 깊게 통합했다. CodeQL 기반 분석이 PR 체크 항목으로 들어오고, 취약점 감지 결과가 리뷰 코멘트로 달린다.

예전엔 이걸 따로 설정해야 했고, 팀에서 일부러 신경 쓰지 않으면 빠졌다. 이제는 리포지토리 설정에서 활성화하면 자동으로 돌아간다.

써봤는데 오탐도 좀 있다. SQL 인젝션 가능성이 있다고 표시된 코드인데 실제로는 파라미터 바인딩을 이미 쓰고 있는 케이스였다. 무조건 신뢰하기보다 결과를 검토하는 단계는 필요하다.

타임존 설정 — 이게 없어서 cron이 항상 UTC였다

GitHub Actions의 schedule trigger는 UTC 기준으로만 돌아갔다. 매일 오전 9시에 실행하려면 UTC 기준으로 0시(또는 시간대마다 계산)를 넣어야 했다. 팀에서 "이게 왜 이 시간에 돌아요?" 질문이 종종 나왔다.

이제 cron 스케줄에 타임존 힌트를 넣을 수 있다. 아직 네이티브 tz 파라미터보다는 환경변수 방식이지만, 워크플로우 상단에 설정하면 일관되게 적용된다.

사소해 보이지만 "배포 스케줄이 왜 다르지?"로 헤매는 시간을 줄여주는 변화다.

Composite Actions — 재사용 구조가 조금 더 나아졌다

여러 워크플로우에서 공통 step을 재사용할 때 Composite Action을 쓰는데, 이게 예전엔 output 전달이 좀 까다로웠다. 특히 step output을 action output으로 올릴 때 문법이 직관적이지 않았다.

최근 업데이트로 output 매핑이 좀 더 명시적으로 됐다. 작은 개선인데 실제로 복잡한 composite action 작성할 때 디버깅 시간이 줄었다.

그래도 YAML 지옥은 여전하다

GitHub Actions 쓰면서 제일 힘든 건 결국 YAML 들여쓰기 문제다. 실수로 스페이스 하나 틀리면 전혀 다른 에러 메시지가 나오고, 원인 찾는 데 시간이 간다.

Actions 자체 기능이 발전해도 이 기본 구조는 안 바뀌니까, 처음 쓰는 사람한테는 여전히 진입 장벽이 있다. 로컬에서 워크플로우 테스트할 수 있는 act 라는 도구를 같이 쓰면 많이 낫긴 한데, 설정이 또 번거롭다.

GitHub Actions의 방향성은 좋다. 계속 개발자 피드백 기반으로 업데이트되고 있다는 게 느껴진다. 불편했던 게 하나씩 해결되고 있는 속도는 꽤 빠른 편이다.


📎 참고 자료

반응형