SonarQube 실행

  • docker 기반 sonarqube를 기동함
  • 재활용을 위해 docker-compose yml 파일로 작성 함
  • 운영 수준의 동작을 위해 데이터 저장용 DB를 postgresql로 함
  • 영속적인 데이터 저장을 위해 volume mount 구성

docker-compose-sonarqube.yml 내용

yml 내용

version: "3.1"

services:
  sonarqube:
    container_name: summit-sonarqube
    image: sonarqube:8-community
    ports:
      - 9000:9000
    depends_on:
      - db
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar
    volumes:
      - ~/mount/sonarqube/sonarqube_data:/opt/sonarqube/data
      - ~/mount/sonarqube/sonarqube_extensions:/opt/sonarqube/extensions
      - ~/mount/sonarqube/sonarqube_logs:/opt/sonarqube/logs
      - ~/mount/sonarqube/sonarqube_temp:/opt/sonarqube/temp
    ports:
      - "9000:9000"
  db:
    container_name: summit-sonarqube-db
    image: postgres:12
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
    volumes:
      - ~/mount/sonarqube/postgresql:/var/lib/postgresql
      - ~/mount/sonarqube/postgresql_data:/var/lib/postgresql/data

sonarqube 기동

  • docker compose yml을 활용하여 기동 함
$ docker-compose -f docker-compose-sonarqube.yml up -d 

Token 발급

  • jenkins 연동을 위한 sornarqube token을 발급

Token 발급 절차

  1. sonarqube 로그인(admin/admin)
  2. [My Account] > [Security] > “Generate Tokens” > 임의 문자 입력 > [Generate] > 토큰 발급
관련 이미지

sonarqube

Jenkins에 설정

  1. Jenkins 관리 > 플러그인 관리 > SonarQube Scanner tjfcl
  2. Jenkins 관리 > 시스템 설정 > SonarQube Server > [Add SonarQube] > 정보 설정
  3. Server authentication token kind, secret, ID 설정 > secret 에는 sonarqube token을 설정 > [ADD]
관련 이미지

sonarqube sonarqube


Jenkinsfile 수정

  • jenkins - sonarqube 연동에 따라 pipeline 수행을 위한 stage 추가
jenkinsfile 내용
pipeline {
	agent any

	stages {
    <중략>
    ...
        stage('SonarQube analysis') {
            steps {
                withSonarQubeEnv('sonarqube') {
                    sh './mvnw sonar:sonar'
                }
            }
        }
    }
    <중략>
    ...
}

Sonarqube Quality Gates webhooks 설정

Quality Gates 조건 설정

  1. sonarqube > Quality Gates > [Create] > [Add Condition]
  2. 조건 입력
조건 입력 값
On Overall Code Quality Gate fails when : Bugs
Operator is greater than 0
  1. [Add Condition] 선택

Quality Gates webhook 설정

  1. [Administration] > [Configuration] > [Webhooks]
  2. [Create] > Name, URL: http://jenkins 도메인:6060/sonarqube-webhook/ 설정

jenkinsfile 수정

jenkinsfile 내용
pipeline {
	agent any

	stages {
    <중략>
    ...
        stage('SonarQube Quality Gate') {
            steps {
                timeout(time:30, unit:'MINUTES') {
                    waitForQualityGate abortPipeline:true
                }
            }
        }
    <중략>
    ...
}

태그:

카테고리:

업데이트:

댓글남기기