lifecarelog
개발일지

Sentry에 배포 릴리스가 안 잡힐 때, Railway 커밋 SHA 직접 주입하기

Railway 배포에서 Sentry 릴리스 탭이 계속 비어 있던 원인과, RAILWAY_GIT_COMMIT_SHA를 release로 직접 주입해 해결한 과정을 정리했어요.

4분 읽기

에러 알림은 오는데, 이게 어제 배포에서 생긴 건지 지난주 코드에서 생긴 건지 구분이 안 되던 적 없나요? 저도 Railway에 올려 둔 서버가 한참 그 상태였어요.

라이프케어로그의 법령·판례 검색 서비스인 플랜엘(plan-l) 서버를 Railway에서 운영하는데, Sentry 대시보드의 릴리스 탭이 계속 비어 있었어요. 배포는 잘 되고 에러도 잡히는데 릴리스만 0개였죠.

원인은 환경변수 이름 하나였어요

직접 확인해 보니 Railway는 배포마다 RAILWAY_GIT_COMMIT_SHA라는 환경변수에 커밋 해시를 넣어줘요. 문제는 Sentry SDK가 이 이름을 모른다는 거예요. SDK가 자동으로 읽는 건 SENTRY_RELEASE처럼 자기 규칙을 따르는 변수라서, Railway가 주는 값은 그냥 무시돼요.

배포 로그에 값을 찍어 보니 해시 자체는 매번 잘 들어와 있었어요. 값은 있는데 아무도 안 읽는 상태였던 거죠.

Railway 배포RAILWAY_GIT_COMMIT_SHA 주입됨SDK는 못 읽음release 옵션에 직접 연결

해결은 코드 한 줄이에요

Sentry 초기화에 release를 명시하면 끝나요.

Sentry.init({
  dsn: process.env.SENTRY_DSN,
  release: process.env.RAILWAY_GIT_COMMIT_SHA,
});

넣고 다시 배포해 보니 릴리스 탭에 커밋 해시가 바로 잡혔어요. 고치는 데 걸린 시간은 10분이 안 됐는데, 원인을 찾기까지가 훨씬 길었죠. 테스트로 에러를 하나 일부러 던져 보니 방금 만든 릴리스에 정확히 묶였어요.

해시 40자가 그대로 보이는 게 길다 싶으면 slice로 7자리만 잘라 써도 돼요. 깃 로그의 짧은 해시와 같은 형태라 눈으로 대조하기 편해요.

릴리스가 잡히면 뭐가 달라지나

에러마다 처음 나타난 릴리스가 붙어요. 새 에러가 어느 배포에서 시작됐는지 역추적이 되니까, 최근 배포 두 번 중 어느 쪽이 문제인지 바로 갈라지죠. 혼자 운영하면 되돌릴 배포를 빨리 정하는 게 제일 큰 이득이에요.

  • 플랫폼 변수와 SDK 변수는 별개
  • release는 명시 주입
  • 배포 후 릴리스 탭에서 실물 확인

정리하면, 플랫폼이 주는 환경변수와 SDK가 읽는 환경변수는 다를 수 있어요. 값이 있다는 것과 읽힌다는 건 별개라는 걸, 이번에 비어 있는 릴리스 탭을 보면서 배웠어요. 배포 파이프라인을 손볼 때 한 번쯤 릴리스 탭을 열어 확인해 보세요.

#Sentry#Railway#배포 추적

라이프케어로그 서비스가 궁금하신가요?

AI 기반 건강·일정·재활 관리 앱을 직접 써보세요.

서비스 살펴보기

관련 글

댓글

아직 댓글이 없어요. 첫 댓글을 남겨주세요.