System Engineering/CI, CD

CI/CD #11. Jenkins(젠킨스)와 Sonarqube(소나큐브) 연동

ZunoXI 2021. 6. 9.

개요

jenkins와 sonarqube연동을 통한 소스 코드 정적 분석 파이프라인 구축

 

jenkins와 sonarqube

바로 전 포스팅에서 centos7에 sonarqube를 설치했다. 해당 서버는 jenkins가 설치되어있던 서버인데, 이번 포스팅에서는 jenkins와 sonarqbue를 연동하여 빌드 시 소스코드를 정적 분석하고 그 결괏값을 확인하는 과정을 기술한다. 작성의 편의를 위해 jenkins와 sonarqbue는 한/영 혼용으로 지칭하려 한다.

 

* Centos7에 sonarqube를 설치한 포스팅은 링크를 참고

 

CI/CD #10. CentOS7 Sonarqube(소나큐브) 설치

개요 CentOS 7 환경에 Sonarqube 7.2 설치하기 Sonarqube 설치 오랜만에 삽질 포스팅을 한다. 거의 2일 꼬박 밤을 새우며 Sonarqube 설치에 매달렸는데, 여러 가지 시도 끝에 해결방법을 찾은 것 같다. Sonarqube

zunoxi.tistory.com

 


 

SonarQube 실행

 

먼저 브라우저에 sonarqube가 실행되고있는 서버:포트 정보를 입력한다. 입력 시 다음과 같은 화면이 보이면 정상적으로 실행되고 있는 상황이라 볼 수 있다.

 

 

 

sonarqube 로그인

 

최초 로그인 시 id : admin / pw : admin 을 입력하면 로그인 가능하다.

 

 

정상적으로 로그인이 완료되었다면 다음과 같은 화면을 확인할 수 있다.

 

 

SonarQube Tokens 생성

 

소나큐브에서 젠킨스와 연동할 수 있는 토큰을 생성하려 한다. 소나큐브 웹페이즈 우측 상단의 'A' 표시를 클릭하고 My Account를 누른다.

 

 

 

이후 아래 그림에서와 같이 Security탭에 Generate Tokens란에 생성할 토큰을 입력하고, Generate 버튼을 누른다. 표시한 숫자의 순서대로 입력하면 된다. 이후 토큰 값이 생성되면 copy 버튼을 누르고 메모장 같은 노트 어플에 복사해 두도록 한다. 

 

 

 

SonarQube 프로젝트 생성

 

다음은 젠킨스와 연동할 소나큐브 프로젝트를 생성한다. 상단 메뉴바의 'Projects'를 클릭 후 Create new project버튼을 클릭하여 프로젝트 생성 화면으로 이동한다. 프로젝트명은 임의로 지정후 set up 버튼을 클릭한다.

 

 

 

Sonarqube 플러그인 설치

 

젠킨스에서 소나큐브와 연동할 수 있는 플러그인을 설치한다. 플러그인은 Jenkins웹페이지 좌측 메뉴에서 에서 Jenkins관리 > 플러그인 관리를 클릭 후, 설치 가능 탭을 클릭한다. 이후 검색창에 아래와 같이 "Sonarqube scanner" 를 입력 후 체크박스를 선택하고 Install without restart를 선택하여 설치한다.

 

 

 

설치가 완료된 것을 확인

 

 

Jenkins Global 설정

 

 

Jenkins관리 메뉴에서 Global Tool Configuration 클릭한다. 바로 전 플러그인을 설치했기 때문에 SonarQube Scanner라는 항목이 확인 가능하다. 'Add SonarQube Scanner' 클릭, 스캐너의 이름을 정하고 버전 확인 후 저장버튼을 클릭 (필자는 version을 따로 지정하지 않았다.)

 

 

 

 

 

 

 

Jenkins SonarQube 시스템 설정

 

jenkins관리에 시스템 설정 메뉴를 클릭 후 SonarQube servers 항목의 'Add SonarQube'를 클릭한다. 이후 확인되는 확장 탭에서 Server이름을 기입하고 현재 소나큐브가 구동되고 있는 ip와 port를 입력하고 저장한다.

 

 

 

 

 

Item 생성 및 구성

 

 

sonarqube 테스트용으로 Item을 생성한다. 필자의 경우 앞선 포스팅에서 생성했던 deploy item을 그대로 복사하여 사용했다. deploy item에 대해서는 링크를 참고하면 좋을 것 같다.

※ 새로 Item을 처음부터 구성할 경우 설정해야 할 것이 많으니 링크의 포스팅 내용을 참고하는 것을 추천한다.

 

CI/CD #9. Jenkins 자동빌드/자동배포 (SSH 원격접속)

개요 Jenkins 자동빌드/자동배포 (SSH 원격접속) Jenkins Deploy 이전 포스팅에서는 webhook을 통해 git push시 jenkins빌드를 유발하고 jenkins서버에 빌드 결과물 앱을 실행시키는 방법에 대해 알아봤다. 하.

zunoxi.tistory.com

 

 

 

 

신규 item을 생성했다면 sonarqube에 대한 구성을 설정한다.

 

 

Add build step에서 Execute SonarQube Scanner 선택

 

 

이후 아래 항목중 'Analysis properties'에 아래 내용을 기입한다.

 

sonar.login=f75146c211f9b42d3780f038349f2bf4139b44d7 # Sonarqube 토큰값
sonar.projectKey=sonarpilot   # Sonarqube 프로젝트 생성 시 Key 값
sonar.projectName=sonarpilot    # Sonarqube 프로젝트명
sonar.host.url=http://*****:9000/    # Sonarqube 스케너가 구동되고 있는 ip:port(필자의 경우 9000번 포트 사용)  
sonar.report.export.path=sonar-report.json
detekt.sonar.kotlin.config.path=default-detekt-config.yml
sonar.sources=src/main/java,src/main/resources
sonar.java.sourcesion=1.0
sonar.sourceEncoding=UTF-8
sonar.java.binaries=target/classes

 

 

저장 후 Build now를 클릭하여 Build가 정상적으로 실행되는지 확인한다.

 

 

배포할 원격서버의 ip:port를 통해 빌드가 정상적으로 이루어짐이 확인되었다면 Sonarqube가 설치된 http://ip:port로 접속하여 생성했던 project에 분석 Overview가 출력되었는지 확인한다.

 

 

위와 같은방식으로 출력되었다면 정상적으로 구성한 것이다.

 

 

다음 포스팅부터는 쿠버네티스에 배포할 수 있게끔 파이프라인 형식으로 Jenkins를 구성하는 절차에 대해 기술할 예정 :)

반응형

댓글