정상 배포마다 남던 배포 요약 스텝의 실패 표시 제거 - #940
Conversation
- Write deployment summary 의 마지막 줄이 "[ -n "$GUARD_REASON" ] && echo" 라, 가드 미발동(정상 배포)이면 조건 거짓의 종료코드 1 이 그대로 스텝 종료코드가 됐다. continue-on-error 덕에 job 은 success 였지만 run 페이지 Annotations 와 스텝 로그 끝에 빨간 실패가 매번 남았다 - 2026-08-13 prod promote(job 94356528421)와 직전 dev 배포(job 94318572726) 양쪽에서 동일 annotation 을 확인했다. 배포 로그를 읽을 때 진짜 실패와 구분되지 않아 실제로 오독을 유발했다 - "|| true" 로 종료코드를 덮는 대신 if 문으로 바꿔, 조건 거짓이 애초에 종료코드가 되지 않게 했다. 가드가 실제 발동한 배포에서는 중단 사유 행이 그대로 출력된다 - 같은 단축평가가 블록 마지막에 오는 다른 지점을 워크플로 전체에서 재조사했다. certbot SSL 파일 복사 지점은 복사가 실제로 실패했을 때만 종료코드가 새는 다른 성격이라 그대로 뒀다
|
Warning Review limit reached
Next review available in: 119 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Discord 스레드 연동용 메타데이터입니다. discord-pr-bot 워크플로가 자동 생성하며, 수정·삭제하면 PR 과 Discord 알림 연동이 끊깁니다. |
- 앞 커밋은 조건 출력을 if 로 감싸 종료코드만 정상화했다. 그 뒤 "그 행이 굳이 필요한가" 를 되짚어 보니, 살릴 값이 아니라 지울 값이었다 - 가드가 발동하면 사유는 이미 세 곳에 나온다. guard 스텝이 발행하는 ::error:: annotation(실제 IP 와 도메인 포함), 같은 스텝의 environment/domainIP/targetIP 로그, Discord 실패 알림의 CAUSE(같은 reason output 을 fallback 문구까지 갖춰 소비). 여기에 요약 표 STATUS 칸의 "중단 (환경-호스트 불일치 가드)" 까지 더하면 표의 중단 사유 행은 네 번째 표기였다 - 중복 표기 하나를 살리려고 방어 코드를 두는 대신 행을 지워, 종료코드가 샐 자리 자체를 없앴다. 앞 커밋에서 넣은 if 문과 주석도 함께 사라진다 - steps.guard.outputs.reason 은 Discord 실패 알림이 계속 소비하므로 output 자체는 그대로 둔다
Situation
prod promote(v1.2.0) 배포 결과를 확인하던 중 run 페이지에
Process completed with exit code 1이 빨갛게 떠서 실패를 의심하고 멈췄다. 확인해 보니 job 3개 전부 success 였고 배포도 정상이었다.배포 요약 스텝(
Write deployment summary)이 정상 배포마다 이 표시를 남기고 있었다. prod 만의 일도 아니었다.[failure] Process completed with exit code 1.Task
Action
원인
요약 표를 만드는 블록의 마지막 줄이 조건 단축평가였다.
GUARD_REASON은 환경과 호스트가 어긋나 배포를 중단했을 때만 채워진다. 정상 배포에서는 빈 문자열이다.echo를 건너뛰고 그 줄의 종료코드는 1 이 된다. 이 줄이 블록의 마지막이라 스텝 종료코드가 1 로 확정됐다. 즉 "중단 사유가 없다"는 정상 상태가 셸에서 실패로 번역됐다.continue-on-error: true가 붙어 있어 job 결과는 success 로 유지됐다. 목록에서는 정상으로 보이고 run 을 열어야 빨간 표시가 드러나, 오랫동안 눈에 띄지 않았다.살릴 값인지 지울 값인지부터 판단
처음에는 조건 출력을
if문으로 감싸 종료코드만 정상화했다. 그 뒤 "그 행이 굳이 필요한가" 를 되짚어 보니, 가드가 발동하면 사유는 이미 여러 곳에 나오고 있었다.::error::로 직접 발행, 실제 IP 와 도메인 포함deploy.yml:111environment/domainIP/targetIP전부 출력deploy.yml:107reasonoutput 을CAUSE로 소비, fallback 문구까지 보유deploy.yml:764중단 (환경-호스트 불일치 가드)요약 표의 "중단 사유" 행은 네 번째 표기였고, run 페이지에서 보면
::error::annotation 과 같은 화면에 나란히 놓인다.if문으로 전환|| true추가continue-on-error제거steps.guard.outputs.reasonoutput 자체는 Discord 알림이 계속 소비하므로 그대로 뒀다. 지운 것은 요약 표의 행과 그 행만을 위한 변수 대입 두 줄이고, 왜 싣지 않는지를 주석으로 남겼다.검증
exit 1로 끝났다. 수정 후 블록은 마지막이 평범한echo라exit 0.GUARD_REASON참조가 남지 않았고, Discord 알림의reason소비는 그대로다.다른 지점 재조사
같은 단축평가가 블록 마지막에 오는 지점을 워크플로 전체에서 훑었다.
deploy.yml): 구조는 같지만 대상 파일이 없고find로도 못 찾은 경우에만 종료코드가 샌다. 그 상황은 복사가 실제로 실패한 것이라 실패 신호가 맞아 그대로 뒀다. 정상 상태가 실패로 번역되는 이번 케이스와 성격이 다르다.|| echo로 보정돼 있어 종료코드가 새지 않는다.Result
연관 이슈