이 문서는 SonarQube Branch 및 Pull Request 분석을 Jenkins와 Bitbucket을 이용하여 설정하는 가이드를 제공하기 위해 작성되었다.
1. Jenkins에서 SonarQube Scanner 플러그인( version 2.11 or later) 설치
Jenkins 관리 → Plugins → Available plugins → SonarQube Scanner for Jenkins 설치
2. Credential 추가
Jenkins 관리 →Credentials → Store scoped to Jenkins에서 System 클릭
System에서 Global Credentials 클릭 → 우측 상단 +Add Credentials 클릭
Credential 정보 입력
3. SonarQube servers 설정
Jenkins 관리 → System → SonarQube servers → Environment variables 체크 → Add Sonarqube 클릭
**Environment variables 체크 시, Job administrator가 SonarQube 서버 구성을 빌드의 환경변수로 주입할 수 있다.
정보 입력
저장
(Developer버전 이상에서 다중 브랜치 파이프라인 잡을 분석하기 위해 필요. Bitbucket 서버,클라우드, GitHub, GitLab에서 설치 및 설정 가능)
[Bitbucket 서버]
1. Bitbucket Branch Source 플러그인(version 2.7 or later) 설치
- Jenkins 관리 → Plugins → Available plugins → Bitbucket Branch Source 플러그인 설치
2. Credential 추가
Jenkins 관리 →Security-Credentials → Store scoped to Jenkins에서 System 클릭
System에서 Global Credentials 클릭 → 우측 상단 +Add Credentials 클릭
Credential 정보 입력
3. Bitbucket Branch Source 플러그인 설정
- Jenkins 관리 → System → Bitbucket Endpoints → Add 클릭 후 Bitbucket Server 선택
정보 입력 후 저장
Project → From Bitbucket Server → repository 선택 → 처음 선택 시 Bitbucket 정보 입력
With Jenkins 선택
Sonarqube가 제공하는 구성 단계별로 설정.
1. Multibranch Pipeline Job 프로젝트 생성
Dashboard 좌측 → +새로운 item → item이름 입력 → pipeline → ok
2. Configuration 설정
Configuration - Branch Sources 에서 Add source 드롭 메뉴 클릭 후 Bitbucket 선택
Bitbucket 정보 입력
Build Configuration
저장
Bitbucket Server Webhook 생성 페이지로 이동 후 정보 입력
Create 클릭
빌드 타입에 따라 선택 후 저장소에 Jenkinsfile 파일 생성 후 코드 붙여넣기
Default Maven 부분을 Jenkins 관리 - Tools - Maven installations의 Name 필드명에 맞춰 수정 |
위에 설정한 게 작동이 잘 될 경우, 새로 분석이 시작되면 Overview 페이지로 리다이렉트되고, 새 분석 결과를 보여준다.
브랜치에서 새로 Push하거나 Pull Request마다 새로운 분석을 트리거한다.
Bitbucket에서 Pull Request Decoration을 확인할 수 있다.
위의 구성 설정 시, repository push or PR → Jenkins 빌드 → 소나큐브에서 브랜치,PR 분석 확인 완료.
젠킨스 빌드 실패시 소나큐브 분석 X
참조
Jenkins integration (sonarsource.com)
Jenkins global setup & SonarQube (sonarsource.com)
Jenkins 파이프라인에 sonarqube 연동 구성 - 박주현 과장 - Confluence (curvc.com)