CI/CD #11. Jenkins(젠킨스)와 Sonarqube(소나큐브) 연동
개요
jenkins와 sonarqube연동을 통한 소스 코드 정적 분석 파이프라인 구축
jenkins와 sonarqube
바로 전 포스팅에서 centos7에 sonarqube를 설치했다. 해당 서버는 jenkins가 설치되어있던 서버인데, 이번 포스팅에서는 jenkins와 sonarqbue를 연동하여 빌드 시 소스코드를 정적 분석하고 그 결괏값을 확인하는 과정을 기술한다. 작성의 편의를 위해 jenkins와 sonarqbue는 한/영 혼용으로 지칭하려 한다.
* Centos7에 sonarqube를 설치한 포스팅은 링크를 참고
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을 처음부터 구성할 경우 설정해야 할 것이 많으니 링크의 포스팅 내용을 참고하는 것을 추천한다.
신규 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를 구성하는 절차에 대해 기술할 예정 :)
'System Engineering > CI, CD' 카테고리의 다른 글
CI/CD #13. jenkins(젠킨스) ERROR: ERROR: Can't construct a java object for tag:yaml 에러 조치 (0) | 2021.06.30 |
---|---|
CI/CD #12. Jenkins(젠킨스)를 이용한 Kubernetes(쿠버네티스) 배포 (1) | 2021.06.24 |
CI/CD #10. CentOS7 Sonarqube(소나큐브) 설치 (0) | 2021.06.08 |
CI/CD #9. Jenkins 자동빌드/자동배포 (SSH 원격접속) (0) | 2021.06.07 |
CI/CD #8. Gitlab Webhook으로 Jenkins 빌드 유발하기 (0) | 2021.06.07 |
댓글