Super Kawaii Cute Cat Kaoani
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ธํ”„๋ผ

[์ธํ”„๋ผ] Jacoco(์ž์ฝ”์ฝ”) ↔ SonarQube(์†Œ๋‚˜ํ๋ธŒ) ↔ Jenkins(์  ํ‚จ์Šค) ์—ฐ๋™ํ•˜์—ฌ ์ฝ”๋“œ ์ •์  ๋ถ„์„ ํ•˜๊ธฐ(1)

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