이 문서는 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)

  • 레이블 없음