젠킨스 ngrok 설정
ngrok은 한 계정에 외부url을 하나만 생성이 가능하므로 계정을 하나 더 만들어 다음 명령어로 url을 생성합니다.
ngrok http 9005 --authtoken={AuthToken}
위에서 설정한 Static Manager Service의 포트번호에 해당하는 외부 url을 생성합니다.
SonarQube Project 선택 -> 우측 상단 Project Settings -> Webhooks를 클릭합니다.
원하는 이름과 위에서 ngrok을 통해 생성한 Static Manager Service의 url을 입력합니다.
소나큐브에서 분석이 완료되면 웹훅을 보내게됩니다.
Static Manager Service에서 POST방식으로 들어오는 웹훅을 받아 프로젝트 정보와 분석 결과를 DB에 저장하도록 서비스에 요청을 위임합니다.
요청에 대한 결과로 responseDto에 생성된 프로젝트 정보와 분석 결과를 담아 반환합니다.
웹훅에 담겨있는 프로젝트의 key, name, url로 SonarProjectEntity를 생성하고 저장합니다.
WebClient를 통해 가져온 분석 결과 JSON파일을 파싱하여 저장합니다.
postman으로 소나큐브의 웹훅과 같은 JSON을 POST방식으로 Static Manager Service에 보냅니다.
정상적으로 생성된 SonarProjectEntity와 analysisEntity를 확인할 수 있습니다.
DB(H2)에도 저장된 정보를 확인할 수 있습니다.
https://recordsoflife.tistory.com/1323
https://jforj.tistory.com/319
https://wpioneer.tistory.com/221
https://www.viralpatel.net/basic-authentication-spring-webclient/
https://velog.io/@chlwogur2/%EC%A4%91%EC%B2%A9%EB%90%9C-JSON%EC%9D%84-Java-Object-%EB%A1%9C-%EB%A7%A4%ED%95%91%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95-With-Jackson