[Jenkins] SonarQube

seopppio·2024년 12월 19일

Jenkins

목록 보기
24/25

SonarQube

정적분석 도구
지속적인 통합, 분석을 할때 사용되는 솔루션

  • 코드의 퀄리티를 높이기 위해, 이슈, 복잡성, 코드 복잡성을 분석해서 코드가 사용할 수 있는 가용범위, 문제 있는 코드를 식별해줌
  • 버그, 취약성을 탐지함
  • Code smell이라고, 불필요한 코드, 코드의 이상 여부를 탐지할 수 있는 부분 체크
  • 코드에 대한 퀄리티, 품질을 높임

코드 빌드 -> 테스트 -> 패키지 -> Deploy
이 과정에서, 정적/동적 테스트를 거친 다음에 코드의 이상이 없는지 유무를 따져봐야함

CI/CD 통합 용도 및 소스 코드 결과를 모니터링하기 위해 사용

플러그인도 다양하게 있음

docker pull sonarqube
docker run --rm -p 9000:9000 --name sonarqube sonarqube

Maven Project 소나큐브에서 분석

플러그인 설치해야함

https://docs.sonarsource.com/sonarqube-server/latest/analyzing-source-code/scanners/sonarscanner-for-maven/

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

최선 버전 설정


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

sonarqube 서버 접속


디폴트 아이디 비번 admin, admin


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

mvn sonar:sonar -Dsonar.host.url=http://localhost:9000 -Dsonar.login=squ_2193073028396472e5ebbe339e1ad6cccd409295

저기 토큰은, 위에서 만든거 입력하자

  • 주의, wsl로 실행하자, pom.xml파일 있는 곳에서 메이븐 빌드 해야함

Bad 코드 추가해보고, 수정해보자

프린트 라인을 쓰는 것은 리소스를 낭비하곤 한다



그냥 메이븐 빌드를하면 문제 없이 빌드 된다




이슈들 쭉 뜨는거 확인 가능

Jenkins, Sonarqube 연동


플러그인 설치

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 하면 된다

0개의 댓글