Sandcorp샌드코프 · 웹·AI 제품 개발

새 프로젝트 받는 중 · 갱신 2026.11sandcorp.co.krGitHub

← 팁

테스트배포·인프라

CI 실패 줄은 PR 댓글로 올려, 콘솔 자격 없이도 읽게 한다

검사 출력을 남겨 두고 실패하면 오류 줄 앞뒤만 뽑아 PR 댓글로 단다. 작업자(사람·AI)에게 CI 콘솔 자격을 나눠 주지 않아도 된다. 비밀값 모양 줄은 지운다.

PR 검사가 빨갛게 떨어졌는데, PR을 낸 작업자는 CI 콘솔에 들어갈 자격이 없다. AI 작업자에게 CI 계정을 나눠 주자니 자격이 퍼지고, 사람이 매번 로그를 복사해 주자니 느리다. 커밋 상태에는 「실패」 한 단어만 보인다.

작업자에게 필요한 건 콘솔 전체가 아니라 실패한 몇 줄이다. 그 몇 줄을 작업자가 이미 읽을 수 있는 곳, PR에 가져다 놓으면 된다.

해법

  1. 검사 단계 출력을 tee로 파일에 남긴다.
  2. 실패하면 로그 전체에서 비밀값 모양 줄부터 지운다.
  3. 그다음 FAILED·Error·Traceback 줄 앞뒤 3줄만 뽑고, 길이에 상한(예: 150줄)을 둔다.
  4. PR 댓글로 단다. 댓글 달기가 실패해도 빌드 결과는 바꾸지 않는다.
set -o pipefail
make test 2>&1 | tee test.log || {
  sed -E '/-----BEGIN [A-Z ]+-----/,/-----END [A-Z ]+-----/d' test.log \
    | grep -v -E 'ghp_|token=|-----(BEGIN|END) ' > clean.log
  grep -n -B3 -A3 -E 'FAILED|Error|Traceback' clean.log \
    | head -n 150 > excerpt.txt
  gh pr comment "$PR_NUMBER" --body-file excerpt.txt || true
  exit 1
}

순서가 중요하다. 앞뒤 몇 줄을 먼저 뽑고 나서 지우면, 뽑힌 조각이 키 블록 한가운데서 시작할 때 BEGIN 줄이 없어 블록 지우기가 걸리지 않고 키 본문이 그대로 나간다. 셸 추적(sh -x)을 켠 단계도 비슷한 함정이 있다. 여러 줄 키 블록이 든 명령을 찍으면 블록의 끝줄만 따로 남을 수 있어, 블록 지우기와 별도로 -----END 같은 줄 단위 패턴도 함께 지운다.

배포 결과를 PR에 알리는 것도 같은 원리로, 커밋 상태에 성공·실패와 짧은 이유를 남긴다.

문의 →