[SonaQube] Sonarqube 자동화
Sonarqube Jenkins 연동
Sonarqube를 Jenkins와 연동 하여 정적분석 자동화 / 리포트 자동화에 대한 문서이다.
준비
Sonarqube
admin 로그인 -> 설정 -> security -> Generate Token -> 발급된 토큰 복사
Projects -> Create new project -> Projectkey 생성한 토큰 붙여넣기 -> Display Name 작성
Provider a token 생성
Jenkins
플러그인 설치
Jenkins 관리 -> 플러그인 관리 -> Sonarqube Scanner 설치
Sonarqube Scanner 플러그인 설정
환경설정
Jenkins 관리 -> 시스템 설정 -> SonarQube Servers
Environment variables 체크 SonarQube installations name : 원하는 명 작성 ServerURL : 소나서버 URL 작성
Global Tool Config
Jenkins 관리 -> Global Tool Configuration -> SonarQube Scanner
*만약 SonarQube Scanner가 안보일 경우, 아래 확인 후 진행 Jenkins 관리 > 플러그인 관리 > 고급 탭 > 맨 아래 “지금 확인” 버튼 클릭
SonarQube Scanner -> “SonarQube Scanner installations…” 클릭 -> Name 입력 -> Install automatically 체크 -> install from Maven Central Version 선택
Jenkins Item 설정
Build
Execute SonarQube Scanner
Analysis properties
sonar.host.url = 자신의 sonar url
sonar.login = loginkey값입력
sonar.projectKey= projectKey값입력
sonar.projectName= projectName입력
sonar.projectVersion= 1.0
# path to source directiories (required)
sonar.sources=src/main/java
sonar.tests=src/test/java
sonar.sourceEncoding=UTF-8
sonar.java.libraries=build/libs/*.jar
sonar.java.binaries=build/classes
sonar.exclusions=src/public/**/*
* 보다 자세한 Analysis Properties 파라미터 정보
Sonar Scanner 설정
jenkins Pipeline
SonarScanner
node {
stage('SCM') {
git 'https://github.com/foo/bar.git'
}
stage('SonarQube analysis') {
def scannerHome = tool 'SonarScanner 4.0';
withSonarQubeEnv('My SonarQube Server') { // If you have configured more than one global server connection, you can specify its name
sh "${scannerHome}/bin/sonar-scanner"
}
}
}
for Gradle
node {
stage('SCM') {
git 'https://github.com/foo/bar.git'
}
stage('SonarQube analysis') {
withSonarQubeEnv() { // Will pick the global server connection you have configured
sh './gradlew sonarqube'
}
}
}
팁
jenkins에서 git checkout한 내용은
/var/jenkins_home/workspace/{해당 job명}/ 폴더 안에 있다.
참고 자료
https://brunch.co.kr/@joypinkgom/45
https://taetaetae.github.io/2018/02/08/jenkins-sonar-github-integration/
https://okky.kr/article/439198
https://daddyprogrammer.org/post/817/sonarqube-analysis-intergrated-intellij/
소나 스캐너
https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-jenkins/