정적분석 도구
지속적인 통합, 분석을 할때 사용되는 솔루션
코드 빌드 -> 테스트 -> 패키지 -> Deploy
이 과정에서, 정적/동적 테스트를 거친 다음에 코드의 이상이 없는지 유무를 따져봐야함
CI/CD 통합 용도 및 소스 코드 결과를 모니터링하기 위해 사용
플러그인도 다양하게 있음
docker pull sonarqube
docker run --rm -p 9000:9000 --name sonarqube sonarqube

https://mvnrepository.com/artifact/org.sonarsource.scanner.maven/sonar-maven-plugin

최선 버전 설정

이런식으로, pom.xml 파일에 이러한 플러그인 추가해준다.

디폴트 아이디 비번 admin, admin

우측 상단 Account의 security tab에서 토큰 만들기

mvn sonar:sonar -Dsonar.host.url=http://localhost:9000 -Dsonar.login=squ_2193073028396472e5ebbe339e1ad6cccd409295
저기 토큰은, 위에서 만든거 입력하자



프린트 라인을 쓰는 것은 리소스를 낭비하곤 한다
그냥 메이븐 빌드를하면 문제 없이 빌드 된다
이슈들 쭉 뜨는거 확인 가능

플러그인 설치
credential 추가, secret에는 sonarqube에서 만든 token 추가하자

젠킨스 시스템 관리에서, 소나큐브 서버 추가
Jenkins가 도커로 기동되고 있으니까 localhost 말고, docker network inspect brdige로 해서, 소나큐브 주소 찾고, 그거 입력하자
Jenkins Pipeline 코드
git에서 clone해서, mvn 빌드하고, packing해서 war파일 만든다. url과 credential은 이미 젠킨스 관리에 등록해두어서, mvn sonar:sonar
pipeline {
agent any
tools {
maven 'Maven3.8.5'
}
stages {
stage('github clone') {
steps {
git branch: 'main', url: 'https://github.com/joneconsulting/cicd-web-project.git';
}
}
stage('build') {
steps {
sh '''
echo build start
mvn clean compile package -DskipTests=true
'''
}
}
stage('SonarQube analysis') {
steps {
withSonarQubeEnv('SonarQube-server') {
sh 'mvn sonar:sonar'
}
}
}
}
}
추가로 저 git에 pom.xml파일이랑 다 있어서, 저 환경에서 mvn sonar:sonar 하면 된다