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 |
---|