이 문서는 SonarQube Branch 및 Pull Request 분석을 Jenkins와 Bitbucket을 이용하여 설정하는 가이드를 제공하기 위해 작성되었다.
SonarQube Extension 설치
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 정보 입력
- Kind : Secret text
- Scope : Global
- Secret : Sonarqube( User > My Account > Security)에서 생성한 토큰 번호
3. SonarQube servers 설정
Jenkins 관리 → System → SonarQube servers → Environment variables 체크 → Add Sonarqube 클릭
**Environment variables 체크 시, Job administrator가 SonarQube 서버 구성을 빌드의 환경변수로 주입할 수 있다.
정보 입력
- Name : Sonarqube 인스턴스 이름
- Server URL : Sonarqube 인스턴스 URL
- Server authentication token : 2.에서 생성한 Credential 선택
저장
Bitbucket Branch Source 플러그인 설치 및 설정
(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 정보 입력
- Kind : Secret text
- Scope : Global
- Secret : Bitbucket( Account>HTTP access tokens)에서 생성한 토큰 번호
3. Bitbucket Branch Source 플러그인 설정
- Jenkins 관리 → System → Bitbucket Endpoints → Add 클릭 후 Bitbucket Server 선택
정보 입력 후 저장
SonarQube에 Bitbucket 저장소 import하여 프로젝트 생성 및 설정
Project → From Bitbucket Server → repository 선택 → 처음 선택 시 Bitbucket 정보 입력
With Jenkins 선택
Sonarqube가 제공하는 구성 단계별로 설정.
Jenkins에서 Multibranch Pipeline Job 생성(Bitbucket 저장소의 모든 브랜치와 PR 분석하기 위함)
1. Multibranch Pipeline Job 프로젝트 생성
Dashboard 좌측 → +새로운 item → item이름 입력 → pipeline → ok
2. Configuration 설정
Configuration - Branch Sources 에서 Add source 드롭 메뉴 클릭 후 Bitbucket 선택
Bitbucket 정보 입력
- Server: 위에서 설정한 Bitbucket서버 선택
- Credentials: 위에서 설정한 Bitbucket서버 Credential 선택
- Owner:YJ(Bitbucket 프로젝트의 경우 프로젝트 키)
- Repository:test(저장소 이름)
- Behaviors:
- Discover branches: Exclude branches that are also filed as PRs.
- Discover pull requests from origin: The current pull request revision.
- Specify ref specs: 디폴트 값이 아니므로 Add클릭하여 추가
Build Configuration
- Mode: by Jenkinsfile
- Script Path: Jenkinsfile
저장
Bitbucket Server Webhook 생성
Bitbucket Server Webhook 생성 페이지로 이동 후 정보 입력
- Name: give a unique name.
- URL: ***JENKINS_SERVER_URL***/bitbucket-scmsource-hook/notify?server_url=https://bitbucket-playground.curvc.com/
- Configuration: Test connection 클릭 → 200(정상)
- Events:
- Repository: Push
- Pull Request: Opened
Create 클릭
Jenkinsfile 생성
빌드 타입에 따라 선택 후 저장소에 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)