SonarQube๋?
์๋ํ๋ธ๋ ํ์ฌ ๊ธฐ์ค 27๊ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๋ฒ๊ทธ, ์ฝ๋์ค๋ฉ, ๋ณด์ ์ทจ์ฝ์ ๋ฑ์ ๋ฆฌ๋ทฐํ๋ ์ ์ ์ฝ๋ ๋ถ์ ๋๊ตฌ์ด๋ค.
์ง์์ ์ผ๋ก ์ฝ๋ ํ์ง์ ๋์ด๊ณ , ์ ์ง๋ณด์๋ฅผ ํ ๋ ๋์์ ์ฃผ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ค. ์ฝ๋ ์ปจ๋ฒค์ ๋ถํฐ ์ ์ฌ์ ์ธ ์ํ ์ฌํญ๊น์ง ์ฒดํฌํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ฝ๋ฉ ์ต๊ด๊ณผ ํ์ง ํฅ์์ ๋ง์ ๋์์ ์ค๋ค.
- ๋ค์ํ ์ธ์ ๋ํ ์ฝ๋ ๋ถ์์ ์ง์
- Admin์ผ๋ก ๋ก๊ทธ์ธํ์ฌ ๋ถ์ ๋ ๊ฒ์ ํ ๋์ ํ์ธํ ์ ์๊ณ , ์ง์์ ์ธ ๊ด๋ฆฌ ๊ฐ๋ฅ
- Jenkins ๊ฐ์ CI ์์ง๊ณผ ํตํฉํ์ฌ ๋ถ์๋ ๊ฐ๋ฅ

์๋ํ๋ธ ๊ฐ์
์๋ํ๋ธ๋ ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด 3๋ถ๋ถ์ผ๋ก ๋๋ ์ ธ ์๋ค.
1. Scanner(์ค์บ๋)๋ ์ ์ ๋ถ์ํ ์ฝ๋๋ฅผ ์๋ํ๋ธ ์๋ฒ๋ก ์ ๋ฌํด์ฃผ๋ ์ญํ ์ ํ๋ค.
Gradle, Maven, Jenkins, .net, ant, Azure Devops์ ๋ํด์๋ ๊ตฌํ๋์ด์๋ Plugin(ํ๋ฌ๊ทธ์ธ)์ ์ ๊ณตํ๊ณ , ์ง์ ์ค์บ๋๋ฅผ ์ปค์คํ ํ ์ ์๋ค.
2. Sonarqube Server(์๋ํ๋ธ ์๋ฒ)์์๋ ์ ์ ๋ถ์์ ํ ํ๋ก๊ทธ๋จ์ด ๋์๊ฐ๊ณ ์๋ ์๋ฒ๋ค.
์ค์บ๋๋ก ๋ถํฐ API ์์ฒญ์ ๋ฐ์ผ๋ฉด, ํด๋น ์ฝ๋์ ๋ํ ์ ์ ๋ถ์์ ์ํํ๊ณ ๋ฆฌํฌํธ๋ฅผ ์์ฑํ๋ค.
3. Database Server(๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ)์์๋ ๋ถ์๊ฒฐ๊ณผ๋ฅผ ์์ํํ๋ค. Postgresql, oracle, MS SQL์ ์ง์ํ๋ค.
(๋ง์ฝ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ฅผ ์ฐ๊ฒฐํ์ง ์๋๋ค๋ฉด, ์๋ํ๋ธ ํ๋ก๊ทธ๋จ ๋ด๋ถ H2 DB๋ฅผ ์ฌ์ฉํ๋ค.)
ํ๋ก์ ํธ ํ๊ฒฝ
- Sonarqube 9.9
- Jacoco
- EC2 : Ubuntu Server 22.04 LTS ( t3-medium )
- Database : Postgresql 15.2
- Java : jdk 17
- CI tool : Jenkins
- ์ ์ฅ์ : GitLab
๐ฃ SonarQube๋ ๊ธฐ๋ณธ์ ์ผ๋ก java, database๊ฐ ์ค์น๋์ด ์์ด์ผ ํ๋ค.
๐ฃ ์์ฃผ ์ฌ์ฉํ๋ mySQL๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ฌ์ฉํ๋ ค๊ณ ํ์ผ๋ sonarqube 7.2 ๊น์ง ์ง์์ผ๋ก postgresql๋ก ์ฌ์ฉ
1. Ubuntu Server jdk 17 ์ค์น ๋ฐ ์ค์ ( EC2 ์์ฑ์ ์๋ต )
# apt ์
๋ฐ์ดํธ
sudo apt update
# apt ์
๊ทธ๋ ์ด๋
sudo apt upgrade
๋ฆฌ๋ ์ค apt ๋ช ๋ น์ด ์ ๋ฐ์ดํธ ํ jdk 17 ๋ฒ์ ์ผ๋ก ์ค์น
# java 17 ์ค์น
sudo apt install openjdk 17-jdk
์ค์นํ java ์ ๋ฒ์ ๊ณผ ๊ฒฝ๋ก๋ฅผ ํ์ธํ์ฌ ํ๊ฒฝ๋ณ์ ์ค์
# java ๋ฒ์ ํ์ธ
java -version
# java ๊ฒฝ๋ก ํ์ธ
which java
sudo vi /etc/environment

# ํ๊ฒฝ๋ณ์ ์ ์ฉ ํ์ธ
source /etc/environment
echo $JAVA_HOME
2. Database - Postgresql ์ค์น ๋ฐ ์ค์
Postgresql ์ ๊ธฐ๋ณธ์ ์ผ๋ก 5432 ํฌํธ์ ์ด๋ฆฌ๊ธฐ ๋๋ฌธ์ EC2 ํฌํธ๋ฅผ ๋ฏธ๋ฆฌ ์ด์ด์ค์ผํจ
# postgresql ์ค์น
sudo apt-get install postgresql
# postgres ๊ณ์ ์ผ๋ก ์ ์
sudo -i -u postgres
# postgresql ์ ์ปค๋งจ๋ ์คํ
psql

postgres=# ์ผ๋ก ๋ฐ๋
์ด์ postgres ๊ณ์ ๋ง๊ณ ๋ sonarqube์ ์ฐ๋ํ์ฌ ์ฌ์ฉํ ๊ณ์ ์ ๋ง๋ค์ด์ค
# ๊ณ์ ์ถ๊ฐ
create user [์ฌ์ฉํ ๊ณ์ ] with password '[์ฌ์ฉํ ์ํธ]';
# ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ
create database [์ฌ์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ช
] owner [๊ถํ์ ๊ฐ์ง๋ ๊ณ์ ];
# ์ถ๊ฐํ ๊ณ์ ์ db ์์ฑ๊ถํ ๋ถ์ฌ
ALTER ROLE [๊ณ์ ๋ช
] WITH createdb;


์๋ฃ ๋๋ฉด ์์ ๊ฐ์ด ๋ธ
3. SonarQube ์ค์น ๋ฐ ์ค์
Download | SonarQube
Get the latest LTS and version of SonarQube the leading product for Code Quality and Security from the official download page.
www.sonarsource.com
์๋ํ๋ธ ๋ค์ด๋ก๋ ํ์ด์ง์์ ๋ฒ์ ๊ณผ ์๋ฒํ๊ฒฝ์ ๋ง์ถ ์๋ํ๋ธ.zip ํ์ผ ๋ค์ด

๋งํฌ ์ฃผ์๋ฅผ ๋ณต์ฌํ์ฌ ubuntu ํ๊ฒฝ์์ ์ค์น
# ์๋ํ๋ธ ๋ค์ด๋ก๋
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.0.65466.zip
# zip ํ์ผ ์์ถ ํด์ ๋ฅผ ์ํ 'unzip' ์ค์น
sudo apt install unzip
# zip ํ์ผ ์์ถ ํด์
unzip sonarqube-9.9.0.65466.zip
sonarqube์ postgresql ์ฐ๋์ ์ํ sonar.properties ํ์ผ ์์
vim [zip ํ์ผ ์ค์น๊ฒฝ๋ก]/sonarqube-9.9.0.65466/conf/sonar.properties

sonar.jdbc.username=[postgresql์์ ์ค์ ํ ๊ณ์ ์ด๋ฆ]
sonar.jdbc.username=[postgresql์์ ์ค์ ํ ์ํธ]
sonar.jdbc.url=jdbc:postgresql://[postgresql ์ฃผ์]
์ ๋ ฅํ๊ณ :wq! ์ ์ฅ ํ์ข ๋ฃ
cd [zip ์ค์น๋ ๊ฒฝ๋ก]/bin/linux-x86-64
์์ ๊ฒฝ๋ก (์ค์น๋ ์๋ฒ์ ํด๋นํ๋ ์ด์์ฒด์ ํด๋๋ก ๋ค์ด๊ฐ)

sonarqube ์คํ ํ์ผ ์กด์ฌ
์ด ๊ฒฝ๋ก์์ ์คํํจ
# ๊ธฐ๋ณธ์ ์ธ sonarqube ์คํ
./sonar.sh start
# sonarqube ์คํ๊ณผ ์ฝ์ ์ถ๋ ฅ
./sonar.sh console start
๐ข ๋ฌธ์ ๋ฐ์
์ฝ์ ์ถ๋ ฅ๊ณผ ํจ๊ป sonarqube ์คํ์ ํ๋๋ฐ ์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋ธ
2023.02.14 00:36:42 INFO es[][o.e.b.BootstrapChecks] explicitly enforcing bootstrap checks
ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.
bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
ERROR: Elasticsearch did not exit normally - check the logs at /home/ubuntu/sonarqube-9.9.0.65466/logs/sonarqube.log
๐ ์ฐธ๊ณ ๋ธ๋ก๊ทธ
http://www.blognawa.com/i/28361/7345018/https://happylie.tistory.com/112
์จ์ค ์ ์ ์ธ์ฅ - [SonarQube] ์๋ํ๋ธ ๊ตฌ๋ ์ vm.max_map_count Error ํด๊ฒฐํ๊ธฐ | ๋ธ๋ก๊ทธ๋์
www.blognawa.com
๊ฒ์ ํด๋ณด๋ ์์ ์๋ฌ๋ vm.max_map_count์ ์ค์ ๊ฐ์ด ์ ํ๋ฆฌ์ผ์ด์ ์์ ํ์๋กํ๋ ์๋ณด๋ค ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํจ
ํด๋น ์๋ฌ๋ Elasticsearch ๊ตฌ๋ ์์๋ ๋ง์ด ๋ฐ์ํ๋ ์๋ฌ์ด๊ณ , ์๋ํ๋ธ๋ ๋ง์ฐฌ๊ฐ์ง๋ก Elasticsearch ๋ฅผ ์ฌ์ฉํ๊ณ ์์
๐ก ํด๊ฒฐ
# vm.max_map_count ์ ์ค์ ๊ฐ ํ์ธ
sysctl -a | grep vm.max_map_count
# vm.max_map_count ์ค์ ๊ฐ ๋ณ๊ฒฝ
sysctl -w vm.max_map_count=262144
์ฒ์์ ์ค์ ๊ฐ์ ํ์ธํด๋ณด๋ฉด vm.max_map_count = 65530 ์ด๋ค.
ํด๋น ๊ฐ์ vm.max_map_count = 262144 ๋ก ๋ณ๊ฒฝํด์ค๋ค.
๋ค์ start ํด๋ณด๋ ์ ์ ๊ตฌ๋!
console๋ก startํ๋ฉด ํฐ๋ฏธ๋์ด ๊บผ์ก์ ๋ ๊ฐ์ด ์ข ๋ฃ๋๊ธฐ ๋๋ฌธ์ start๋ก ๋ฐ๋ก ์ ์ํ๊ธฐ
โ Jenkins , Jacoco ์ฐ๋์ ๋ค์ ํฌ์คํ ์์...
๐ ์ฐธ๊ณ ๋ธ๋ก๊ทธ
https://kys9261.github.io/2019/05/02/programming/devops/how-to-install-sonarqube-on-ubuntu/
ubuntu์ SonarQube ์ค์นํ๊ธฐ
ํ์ฌ์์ ํผ์์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค๋ณด๋ฉด ์ฝ๋์ ๋ฌธ์ ๊ฐ ๊ฑฐ๋๋ ์ทจ์ฝ์ ํน์ ์ ์ฌ์ ์๋ฌ ๋ฐ์ ๋ถ๋ถ์ ๋ํด์ ์ค์ค๋ก ํ์ ํ๊ณ ํด๊ฒฐํด์ผํ๋ ๋ฌธ์ ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.์ ๋ ํญ์ ๊ทธ ๋ถ๋ถ๋
kys9261.github.io