Bamboo Task에 Sonar-Scanner를 추가시켜서 동기화를 시키는 방법도 있고 Script 방식으로 동기화 명령어를 실행해서 동기화하는 방법도 있다. 여기서는 Script 방식으로 동기화를 한다.
Bamboo에서 Build시에 명령을 수행하는 것은 Remote Agent이기 때문에 Remote Agent에 Sonar-Scanner를 설치해준다.
설치
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.0.2311-linux.zip
unzip sonar-scanner-cli-4.6.0.2311-linux.zip -d /opt/
ln -s /opt/sonar-scanner-4.6.0.2311-linux /opt/sonar-scanner
환경설정
cd /opt/sonar-scanner/conf
vi sonar-scanner.properties
...
#----- Default SonarQube server
sonar.host.url=<your sonar url>
환경변수 설정
vi /etc/profile
...
export PATH=$PATH:/opt/sonar-scanner/bin
개별 프로젝트에 대한 환경설정 파일 생성 (선택)
[root@localhost conf]> cat unicorn-editor.properties
# miricanvas-web
sonar.projectKey=<your key>
sonar.projectName=<your project name>
sonar.projectVersion=1.0
sonar.sourceEncoding=UTF-8
sonar.sources=src/homepage,src/editor,src/shared, src/editorex, src/homepageex, src/mail/java
sonar.exclusions=**/node_modules/**,**/*css,**/*xml,**/*ejs,**/*eot,**/*ttf,**/*woff,**/*woff2,**/*json,**/*js,**/*png,**/*jpg,**/*svg
sonar.test.inclusions=**/*.spec.ts,**/test/**/*test.ts
sonar.ts.tslintconfigpath=tslint.json
sonar.typescript.lcov.reportPaths=temp/test_result/lcov.info
sonar.java.binaries=.
동기화 명령어 작성
/opt/sonar-scanner/bin/sonar-scanner \
-Dsonar.projectKey=<your key> \
-Dsonar.host.url=<your sonar url> \
-Dsonar.sources=. \
-Dsonar.login=<your login key> \
sonar.language=TypeScript
-Dsonar.cpd.TypeScript.minimumtokens=20\
-Dsonar.cpd.TypeScript.minimumLines=5\
-Dproject.settings=/opt/sonar-scanner/conf/unicorn-editor.properties
Final Task로 설정
*Sonar-scanner 실행 시 오류가 발생하면 위에서도 언급했듯이 코드환경에 따라서 Sonar-scanner 옵션을 추가로 줘야하는 부분들이 존재함