SONAR SERVER

 회사에서 SAFE CODING 을 위해 SONAR SERVER 를 사용하여 코드 분석을 하려고 한다. 


1. sonar server 2. git 3. jenkins 


sonar server 는 따로 분리되어 있으며 , open jdk 11 , postgreSql 을 설치해 놓았다. 


2. git 현재 여러개의 프로젝트중에 A 프로젝트를 연결할 것이다. 


3. jenkins : 2번의 A프로젝트가 push 이벤트가 발생하면 build 하도록 설정 


현재 우리는 jenkins 와 git 이 동일한 사설 ip 내부에 들어있다. git 이 webhook 을 생성시 url 과 token key 값이 필요한데 그때 localhost/ 로 ip 를 설정해주어도 되고 지금 사용중인 사설 ip 로 값을 불러도된다. port 도 동일 

* 제일 좋은 것은 영어로 된 공식문서가 아주 깔끔하다는 것을 느꼈고, 유투브를 보면서 자꾸 변하는 것들은 공식문서 ( 최신 업데이트)를 사용해서 공부해야 한다는 것을 알았다. 


내가 진행하기 위해서 조사한 것 

1. - sonarQube 설치

.zip 파일 다운로드 -> 압축풀기 * 숫자로 시작하는 디렉토리에 압축을 풀면 안된다.

(or Docker image 를 사용하기도 한다. )


2. 해당 폴더의 conf/sonar-properties 에 DB 설정한다.

DB 설정 : empty schema 를 설정.

sonarqube user 생성 ( create , update , delete object 권한 부여가 필수다 )

Edit $SONARQUBE-HOME/conf/sonar.properties sonar.jdbc.username=이름설정 sonar.jdbc.password=패스워드설정 sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube


3. ip 값을 설정해준다. 현재 내부망pc 에서 sonar 서버에 접근할 수 있도록 ip 를 뚫어준다.

default 로 Elasticsearch 데이터는 $SONARQUBE-HOME/data 여기 저장되지만 , 상용에서는 권장되지 않아서, Edit $SONARQUBE-HOME/conf/sonar.properties to configure the following settings:

sonar.path.data=/var/sonarqube/data sonar.path.temp=/var/sonarqube/temp


4. Web server 시작하기

공식문서에 보니 값 셋팅이 있다.

If you're running on Linux, you must ensure that: - vm.max_map_count is greater than or equal to 524288 - fs.file-max is greater than or equal to 131072 - the user running SonarQube can open at least 131072 file descriptors - the user running SonarQube can open at least 8192 threads


그래서

sysctl vm.max_map_count sysctl fs.file-max ulimit -n ulimit -u 셋팅법 : sysctl -w vm.max_map_count=524288 sysctl -w fs.file-max=131072 ulimit -n 131072 ulimit -u 8192


default port 는 9000 으로 지정되어 있다.

$SONARQUBE-HOME/conf/sonar.properties 에서 변경이 가능하다.


예시) sonar.web.host=ip 번호 sonar.web.port= port 번호 sonar.web.context=/sonarqube


6. 실행하기


bin/linux-x86-64/sonar.sh start


7. git 에 push 이벤트 발생시 build 할 프로젝트에 integrations 를 설정하여 , web hook 을 부여한다.

url 은 위에도 언급했다 싶이 우리 사설 ip / port 이며 , token key 는 젠킨스에서 생성한 key 를 넣는다.


8. jenkins 에서도 빌드시 수행할 script 설정해준다.

댓글