CI/CD 구축하기 (2)

LaStella·2023년 4월 6일
0

CI/CD 구축하기

목록 보기
2/3

1. SonarQube 설치

도커를 사용하여 소나큐브를 설치합니다.

소나큐브의 default 포트번호는 9000입니다.
초기 ID와 Password는 admin으로 최초 로그인시 비빌번호를 변경페이지가 나옵니다.

2. SonarQube 프로젝트 생성 및 토큰 생성

Manually에서 소나큐브 프로젝트를 생성합니다.

Locally에서 프로젝트의 토큰을 생성합니다.
최초 토큰 생성시에만 확인할 수 있으므로 토큰을 저장합니다.

3. Jenkins에서 SonarQube Scanner 플러그인 설치

Dashboard > Jenkins 관리 > 플러그인 관리 > Available plugins에 들어갑니다.
검색하여 나오는 SonarQube Scanner를 설치합니다.

4. SonarQube Credential 생성

Dashboard > Jenkins 관리 > Credentials > (global) > Add Credentials에 들어갑니다.
Secret : 2에서 생성한 소나큐브 Project Token을 입력합니다. (Token Name : Analyze "cicdtest")
ID : 임의의 식별가능한 이름을 작성합니다. (ex. SONAR_TOKEN)

5. SonarQube Server 설정

Dashboard > Jenkins 관리 > 시스템 설정에 들어가서 SonarQube Servers 항목을 찾습니다.
Name : 임의의 식별가능한 이름을 작성합니다. (ex. sonarqube)
Server URL : 빈칸으로 두면 소나큐브의 기본 설정 주소가 사용됩니다.
Server authentication token : 4번에서 등록한 토큰을 사용합니다. (SONAR_TOKEN)

6. SonarQube Scanner 설정

Dashboard > Jenkins 관리 > Global Tool Configuration에서 SonarQube Scanner 항목을 찾습니다.
Add SonarQube Scanner 누른 후 값을 입력합니다.
Name : 임의의 식별가능한 이름을 작성합니다. (ex. sonarqube-scanner)
자동 설치 체크를 확인하고 설치되는 버전을 확인합니다.

7. sonar-project.properties 설정

분석할 프로젝트의 root위치에 sonar-project.properties를 생성합니다.
https://docs.sonarqube.org/9.8/analyzing-source-code/scanners/sonarscanner/

8. 파이프라인 스크립트 작성

Dashboard > 프로젝트명 > 구성(Configuration)에서 파이프라인 스크립트를 작성합니다.

pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps {
                git branch: 'main',
                    credentialsId: 'github_access_token',
                    url: 'https://github.com/LaStella/practice-cicd.git'
            }
        }
        
        stage('Build') {
            steps {
                // sh './gradlew clean'
                // sh './gradlew build'
                sh './gradlew clean bootJar'
            }
        }
        
        stage('SonarQube analysis') {
            steps{
                script {
                    def scannerHome = tool 'sonarqube-scanner'
                    withSonarQubeEnv(credentialsId:"SONAR_TOKEN",installationName:'sonarqube') {
                        sh "${scannerHome}/bin/sonar-scanner"
                    }
                }
            }
        }
    }
}
  • scannerHome : 6번에서 설정한 소나큐브 스캐너 이름을 넣습니다.
  • withSonarQubeEnv()

9. 결과

참고글

https://www.jenkins.io/doc/pipeline/steps/sonar/
젠킨스 파이프라인 정리 - 2. Scripted 문법 소개
[SONARQUBE&JENKINS] 소나 큐브, 젠킨스 파이프라인 적용
소나큐브 설치하기
[SonarQube] 소나큐브 설치하기
CI/CD #11. Jenkins(젠킨스)와 Sonarqube(소나큐브) 연동
[SonarQube] SonarQube & Jenkins 이야기
Jenkins로 CI/CD Pipeline 구축하기 - 10. Jenkins와 Sonarqube 연동

profile
개발자가 되어가는 중...

0개의 댓글