본문 바로가기
ops/other

jenkins 파이프 라인에 sonarqube 적용하기

by seohan1010 2025. 11. 18.

 

현재 jenkins ci에는 mock 테스트와 checkstyle(코드 표준 검사)
가 적용이 되어있다. 

 

각각의 테스트 결과는 workspace의 build/reports 하위 디렉터리게 
존재한다. 
 (checkstyle: checkstyle, mock: tests)

생성된 리포트를 스캔해서 sonarqube 서버에 업로드 하려고 한다. 

 

403에러와 함께 설치가 되지 않는다. 
(검색해 보니 다운로드 서버가 한국에서 막혀서 그렇다고 한다.)



sonarqube는 도커로 설치하기로 했다 
sonarqube와 db를 모두 컨테이너로 만들수도 있으나 
db는 이미 로컬에 설치되어 있으므로 
sonarqube만 컨테이너로 실행 하려고 한다. 



위의 파일에서 

 

sonarqube 컨테이너에서 오는 요청만 받기 위해 
마지막 줄에 위과 같이 추가 

(127, 혹은 ::1 은 모두 local에서 시작하는 주소이기 때문에 상관없음)

 

이 파일에서 

 

위의 코드를 추가 

 

 

db 재시작 




도커를 설치하고 sonarqube 컨테이너가 실행될때 
local에서 실행되고 있는 db와 연결되도록 하여 실행 



 

Elastic Search가 실행에 실패했다는데 
나는 sonarqube가 필요한건데 
같이 실행되는거 같다.

 

 

메모리가 4G이상이어야 한다고 하는데 
내가 사용하고 있는 가상머신의 메모리는 1G도 
되지 않는 것이 문제였다. 

 

 

가상머신의  RAM을 충분하게 변경 후 


 

이번에는 DB에 연결이 되지 않는다는 문제가 발생 

 

db는 잘 실행이 되고 있다. 


 

db로 전송하는 파라미터의 크기문제 때문일수도 있다고 하여서 
환경변수를 설정해 주었다. 

 


ALTER DATABASE sonarqube OWNER TO sonar;
ALTER SCHEMA public OWNER TO sonar;
GRANT ALL PRIVILEGES ON SCHEMA public TO sonar;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO sonar;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO sonar;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT ALL PRIVILEGES ON TABLES TO sonar;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT ALL PRIVILEGES ON SEQUENCES TO sonar;

db 유저의 권한을 변경 및 할당하는 
쿼리를 실행해 주었으나 여전히 되지 않는다. 

 

 


sonarqube는 컨테이너(:lts 로 태그를 주었음)로 실행이 되고 있고 
postgresql은 local에서 실행이 되고 있는데 
db에 연결은 되나 위와 같은 문제로 되지 않는것 같다  


 

데이터 베이스를 지우고 다시 생성하였다 


 

컨테이너의 sonarqube버전과 db의 스키마의 sonarqube 버전을 비교하기 위해 
쿼리문을 실행했는데 테이블이 존재하지 않는다고 한다. 

 

sonarqube와 db버전 자체가 맞지 않아서 그럴수도 있다고 한다. 



 db의 버전은 18

 

sonarqube에서 db를 지원하지 않으므로

db를 삭제하고 새로 설치해야 한다.



sudo systemctl stop postgresql
sudo apt-get --purge remove postgresql*
sudo rm -rf /etc/postgresql/
sudo rm -rf /var/lib/postgresql/
sudo rm -rf /var/log/postgresql/

 

위의 명령어를 입력해서 db를 삭제해 준다. 


sudo apt-get install postgresql-16
버전 16의 db 설치 



 

재설치 및 재설정후 위의 정보를 확인 


 



데이터 베이스 생성 및 유저 생성후 다시 
sonarqube 컨테이너 실행 

 

schema_migrations 라는 테이블 생성 실패 

 

sonarqube 데이터 베이스의 소유자를 sonarqube에서 사용하는 sonar로 변경
(초기에는 postgres로 되어 있었음)

 

\l  을 입력하여 데이터 베이스 정보를 확인 

 

schema_migrations 테이블이 정상적으로 생성 되었다. 


ps. 

 

IaC 코드 관련 검사도 할수 있나보다