CI 파이프라인 재사용과 롤백에서 만난 grep 함정
세 프로젝트 CI를 재사용 품질 게이트로 묶고, 롤백에서 grep이 UUID를 두 개 뱉는 버그를 고친 1인 개발 기록이에요.
CI 파이프라인 재사용과 롤백에서 만난 grep 함정
혼자 여러 서비스를 굴리다 보면 CI 설정이 프로젝트마다 조금씩 흩어져요. 저도 지난 7일 동안 커밋 13건을 쌓으면서, 같은 배포 파이프라인을 프로젝트마다 복붙하고 있다는 걸 뒤늦게 알아챘어요. 혹시 비슷한 상황 겪어 보신 적 없나요?
같은 설정을 세 번 복붙하고 있었다
플랜씨(plan-c) 금융계산기, 플랜비(plan-b) 농구 매니저, 플랜엘(plan-l) 법령 검색. 세 프로젝트의 CI가 이름만 다르고 내용은 거의 같았어요. 품질 검사, 배포 알림, 롤백, 커버리지 게이트까지 네 덩어리가 판박이였죠. 한 곳을 고치면 나머지 두 곳도 손으로 맞춰야 했어요.
그래서 같은 날 세 프로젝트에 품질 게이트를 재사용 워크플로로 묶는 작업을 했어요. 반복되는 검사 블록을 한 파일로 빼고, 각 프로젝트는 그걸 불러 쓰는 구조로 바꿨어요. 직접 정리해 보니 고칠 곳이 하나로 줄어드는 게 제일 컸어요.
- 품질 게이트
- 배포 알림
- 롤백
- 커버리지
롤백에서 grep이 UUID를 두 개 뱉었다
문제는 롤백 쪽에서 나왔어요. 배포가 실패하면 직전 배포로 되돌려야 하는데, 그러려면 이전 배포의 ID를 먼저 찾아야 하거든요. 스크립트가 로그에서 그 ID를 grep으로 긁어 오는 방식이었어요.
돌려 보니 한 줄에 UUID가 두 개 담겨 나오는 경우가 있었어요. grep은 줄 단위로 잡으니까, 한 줄에 값이 둘이면 그대로 두 개를 넘겨 버려요. 롤백 대상이 하나여야 하는데 두 개가 들어가니 뒤 단계가 어긋났죠.
작게 고치고 넘어가기
고칠 때도 크게 손대지 않았어요. 여러 줄이 아니라 한 줄에 값이 두 개 붙어 나오는 상황이었으니, 줄이 아니라 값 하나만 집어내도록 파싱을 바꾼 게 전부예요. 원인은 grep의 줄 단위 습성이었지, 스크립트 전체가 잘못된 건 아니었어요.
이런 건 테스트해 보기 전엔 잘 안 보여요. 로그 형식이 조금만 달라져도 조용히 어긋나거든요. 혼자 운영하면 이런 작은 함정이 배포날 밤에 튀어나오기 쉬운데, 재사용 구조로 묶어 두면 최소한 한 번 고쳐서 세 곳이 같이 나아진다는 점이 좋았어요.
여러 프로젝트를 겹쳐 굴린다면, 반복되는 CI부터 한 파일로 모아 보세요. 작은 정리가 다음 배포를 조금 덜 무섭게 만들어 줘요.
관련 글
댓글
아직 댓글이 없어요. 첫 댓글을 남겨주세요.