본문 바로가기

TroubleShooting

Jenkins-SonarQube 연동 에러: "The ‘report’ parameter is missing" (HTTP 400)

반응형

최근 사내 CI/CD 파이프라인을 점검하던 중, 소나큐브(SonarQube) 분석 단계에서 발생한 에러를 해결한 과정을 공유합니다. 단순한 설정 오류가 아닌 인프라 환경 이슈였기에, 비슷한 문제를 겪는 분들에게 도움이 되길 바랍니다.


1. 발생 이슈 (Issue)

Jenkins 빌드 로그에서 소나큐브 분석 리포트를 서버로 전송하는 과정 중 아래와 같은 에러가 발생하며 빌드가 중단되었습니다.

에러 메시지:
The ‘report’ parameter is missing

단순히 파라미터가 누락되었다는 메시지만으로는 원인을 파악하기 힘든 상황이었습니다.


2. 원인 분석 (Analysis)

🔍 로그의 깊이 더하기 (-X 옵션)

가장 먼저 수행한 것은 로그의 상세화입니다. Jenkinsfile의 실행 스크립트에 디버그 모드(-X) 옵션을 추가하여 상세 Stack Trace를 확인했습니다.

💡 400 Bad Request와 IOException

상세 로그를 통해 확인한 결과, 젠킨스가 소나큐브 서버로 리포트를 보낼 때 HTTP 400 에러가 발생하고 있었습니다.
더 깊이 파고들어 보니 소나큐브 서버 내부에서 java.io.IOException이 발생 중이었고, 이는 서버가 리포트 파일을 저장할 임시 경로를 찾지 못해 발생한 문제였습니다.

  • 문제 경로: /data01/***/**/***/****/***/*****/ROOT
  • 원인: 서버 마이그레이션 혹은 관리 과정에서 위 디렉토리가 누락되어 임시 파일 업로드가 불가능한 상태.

3. 해결 방법 (Solution)

애플리케이션 설정 파일(.yml 등)의 문제가 아닌 서버 환경의 무결성 문제였으므로, 서버에 직접 접속하여 인프라를 복구했습니다.

  1. 디렉토리 생성: 누락된 /data01/***/**/... 경로를 계층별로 생성했습니다.
  2. 권한 부여: 소나큐브 프로세스가 해당 폴더에 파일을 쓰고 읽을 수 있도록 chownchmod 명령어로 권한을 조정했습니다.
  3. 검증: 젠킨스 빌드를 재실행하여 리포트 전송 성공을 확인했습니다.

4. 결과 및 배운 점 (Retrospective)

✅ 결과

  • 정상화: 분석 리포트 전송 실패 문제를 해결하고 CI 파이프라인을 정상화했습니다.
  • 지표 최신화: 2023년 이후 업데이트되지 않던 코드 품질 지표가 오늘 날짜로 갱신되었습니다.
  • 링크 동기화: 소나큐브 대시보드 내의 Jenkins 연결 주소를 최신 URL로 업데이트했습니다.

📝 배운 점

  1. 디버깅의 기본: 에러 메시지가 모호할 때는 주저 없이 디버그 모드를 활용해야 합니다. -X 옵션 하나가 삽질 시간을 몇 시간이나 단축해 주었습니다.
  2. 인프라 시야 확보: 백엔드 개발자는 코드뿐만 아니라 애플리케이션이 돌아가는 파일 시스템, 권한, 네트워크 상태를 항상 함께 고려해야 함을 다시금 깨달았습니다.
  3. 환경 관리의 중요성: 서버 설정 변경 후에는 반드시 임시 경로와 같은 부수적인 환경 요소들이 잘 보존되어 있는지 체크리스트를 통해 확인해야 합니다.
반응형