본문 바로가기

DevOps/Sonarqube

Sonarqube - Jenkins 연동 - 1. Sonarqube 설치

Jenkins에서 Sonarqube 정적검사를 하고, 퀄리티가 낮으면 배포가 되지 않도록 파이프라인에 넣는 부분을 작성하려합니다.

 

기존에 Ansible로 Sonarqube를 설치하는 글을 참고하셔서 설치하셔도 무방합니다.

 

저는 자바 1.8을 기준으로 세팅 할 예정이라 Sonarqube 7.2 버전을 사용하겠습니다.

 

기본 세팅

 

sudo amazon-linux-extras install -y epel

sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
date

sudo yum install -y python3
sudo python3 -m pip install --upgrade pip
sudo python3 -m pip install awscli

sudo yum install -y java-1.8.0-openjdk-devel.x86_64
rpm -qa java*jdk-devel
javac -version

 

소나큐브 설치

 

cd /opt
sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.2.zip
sudo unzip sonarqube-7.2.zip
sudo mv sonarqube-7.2 sonarqube
sudo chown -R sonarqube:sonarqube /opt/sonarqube

 

Mysql 설치

 

sudo yum install -y https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 
sudo yum install -y mysql-community-client 
sudo yum install -y mysql-server

 

Mysql 비밀번호 변경

 

sudo grep 'temporary password' /var/log/mysqld.log

mysql -u root -p 

ALTER USER 'root'@'localhost' identified by '{your_db_passwd}’;
COMMIT;
quit

 

MYSQL 유저 및 DB 세팅

 

REATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'sonar'@'localhost' IDENTIFIED BY 'Sonar123!@#' PASSWORD EXPIRE NEVER;
GRANT ALL PRIVILEGES ON sonar.* TO 'sonar'@'localhost';
FLUSH PRIVILEGES;

 

DB 설정

 

sudo vi /opt/sonarqube/conf/sonar.properties
sonar.jdbc.username=sonar
sonar.jdbc.password={your sonar passwd}
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?

 

위에까지 끝나셨다면 모든 세팅이 끝난겁니다.

 

만약 RDS나 다른 DB를 사용하신다면, 해당 디비에 세팅해주시면 됩니다.

 

이제 소나큐브를 실행해보도록 하겠습니다.

 

cd /opt/sonarqube/bin/linux-x86-64
./sonar.sh start
./sonar.sh status
./sonar.sh console

 

만약 리눅스 서비스로 등록하여서 사용하시려면 아래 파일을 만드시면됩니다.

 

sudo vi /usr/lib/systemd/system/sonar.service

 

위의 파일에 아래 내용을 입력해주시면 됩니다.

 

[Unit]
Description=SonarQube service
After=syslog.target network.target

[Service]
Type=simple
User=sonarqube
Group=sonarqube
PermissionsStartOnly=true
ExecStart=/bin/nohup /usr/bin/java -Xms32m -Xmx32m -Djava.net.preferIPv4Stack=true -jar /opt/sonarqube/lib/sonar-application-7.2.jar
StandardOutput=syslog
LimitNOFILE=65536
LimitNPROC=8192
TimeoutStartSec=5
Restart=always
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

 

자, 이제 systemctl로 서비스를 실행 하실 수 있습니다.

 

sudo systemctl enable sonar.service

 

아래와 같이 접속이 되었다면, 다음 게시글에서 젠킨스와 연동, Quality Gates 설정을 알아보겠습니다.

 

'DevOps > Sonarqube' 카테고리의 다른 글

Sonarqube - Jenkins 연동 - 2. Sonarqube / Jenkins 세팅  (0) 2021.01.08