[DevOps] Docker๋ฅผ ์ด์šฉํ•œ SonarQube ์„ค์น˜ํ•˜๊ธฐ

2023. 6. 2. 11:38ใ†System ์ž‘์—…์‹ค/DevOps

728x90
๋ฐ˜์‘ํ˜•

 

 



 

 

 

๐Ÿš€ SonarQube ์„ค์น˜

    ๐Ÿ”ฝ ๊ฐœ์š”

        ๐Ÿ“ฆ ์†Œ๊ฐœ

์ด๋ฒˆ์—๋Š” Docker๋ฅผ ์ด์šฉํ•˜์—ฌ SonarQube๋ผ๋Š” ๊ฒƒ์„ ์„ค์น˜ํ•ด ๋ณด๋ ค๊ณ  ํ•ด์š”.

๋จผ์ € SonarQube๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?

์†Œ๋‚˜์†Œ์Šค๊ฐ€ ๊ฐœ๋ฐœํ•œ ์†Œ๋‚˜ํ๋ธŒ๋Š” ์ฝ”๋“œ ๋ฒ ์ด์Šค์˜ ์ฝ”๋“œ ํ’ˆ์งˆ ๋ฐ ๋ณด์•ˆ์„ ์ง€์†ํ•ด์„œ ๊ฒ€์‚ฌํ•˜๊ณ , ์ฝ”๋“œ ๊ฒ€ํ†  ์ค‘์— ๊ฐœ๋ฐœํŒ€์„ ์ข‹์€ ์ฝ”๋“œ๋กœ ์ธ๋„ํ•˜๋Š” ์•ˆ๋‚ด์ž ์—ญํ• ์„ ํ•˜๋Š” ๋„๊ตฌ์—์š”.

ํ˜„์žฌ 27๊ฐœ์˜ Programming Language๋ฅผ ์ง€์›ํ•˜๊ณ , ๊ธฐ์กด Software Pipeline๊ณผ ์—ฐ๊ฒฐ๋˜๋Š” ๋™์•ˆ ์†Œ๋‚˜ํ๋ธŒ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๊ณ , ์ˆ˜์ •ํ•˜๊ณ , ํŒ€ ์ „์ฒด๊ฐ€ ๋” ์šฐ์ˆ˜ํ•˜๊ณ , ์•ˆ์ „ํ•œ ๊ฐœ๋ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ช…ํ™•ํ•œ ์ˆ˜์ • ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ์ œ๊ณตํ•ด ์ฃผ๋Š” ์นœ์ ˆํ•œ ๊ฐœ๋ฐœ ๋™๋ฐ˜์ž์—์š”.

170,000๊ฐœ ์ด์ƒ์˜ ๋ฐฐํฌ๋ฅผ ํ†ตํ•ด ์†Œ๊ทœ๋ชจ ๊ฐœ๋ฐœํŒ€๊ณผ ๊ธ€๋กœ๋ฒŒ ์กฐ์ง์„ ์ง€์›ํ•˜๋Š” ์†Œ๋‚˜ํ๋ธŒ๋Š” ์ „ ์„ธ๊ณ„์˜ ๋ชจ๋“  ํŒ€๊ณผ ํšŒ์‚ฌ๊ฐ€ ์ฝ”๋“œ ํ’ˆ์งˆ ๋ฐ ๋ณด์•ˆ์„ ์†Œ์œ ํ•˜๊ณ  ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋‹จ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์–ด์š”.

์†Œ๋‚˜ํ๋ธŒ๋Š” 20๊ฐœ ์ด์ƒ์˜ Programming Language์—์„œ Bug, Code smell, ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ๋ฐœ๊ฒฌํ•  ๋ชฉ์ ์œผ๋กœ ์ •์  ์ฝ”๋“œ ๋ถ„์„์„ ํ†ตํ•ด ์ž๋™ ๋ฆฌ๋ทฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ง€์†์ ์ธ ์ฝ”๋“œ ํ’ˆ์งˆ ๊ฒ€์‚ฌ์šฉ ์˜คํ”ˆ ์†Œ์Šค ํ”Œ๋žซํผ์ด์—์š”.

์†Œ๋‚˜ํ๋ธŒ๋Š” ์ค‘๋ณต ์ฝ”๋“œ, ์ฝ”๋”ฉ ํ‘œ์ค€, ์œ ๋‹› ํ…Œ์ŠคํŠธ, ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€, ์ฝ”๋“œ ๋ณต์žก๋„, ์ฃผ์„, ๋ฒ„๊ทธ ๋ฐ ๋ณด์•ˆ ์ทจ์•ฝ์  ๊ด€๋ จ ๋ณด๊ณ ์„œ ๋˜ํ•œ ์ œ๊ณตํ•ด ์ฃผ๋Š” ์นœ๊ตฌ์—์š”. ๋˜ํ•œ, ๊ฐ์ข… Plugin์„ ์ œ๊ณตํ•˜์—ฌ ๋ณด๋‹ค ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋ฉฐ, IDE ํ™•์žฅ Plugin์œผ๋กœ ์†Œ๋‚˜๋ฆฐํŠธ๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์ฝ”๋“œ ํ’ˆ์งˆ ๋ฌธ์ œ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ , ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๊ณ  ์žˆ์–ด์š”.

์†Œ๋‚˜ํ๋ธŒ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๊นŒ์ง€ ๋‹ค์–‘ํ•œ Edtion์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ , ๊ทธ ์ค‘ ์ฃผ๋‹ˆ์“ฐ๊ฐ€ ๊ตฌ์ถ•ํ•  Communication Edition์€ ๋ฌด๋ฃŒ ๋ฒ„์ „์ด์—์š”.

์ฐธ๊ณ ๋กœ ๊ทธ ์™ธ Edition์€ ์ธ์Šคํ„ด์Šค ๋‹น ์ฝ”๋“œ ๋ผ์ธ ์ˆ˜๋กœ ๊ฐ€๊ฒฉ์ด ์ฑ…์ •๋˜๊ณ , ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ๋” ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.

 

 

 


์†Œ๋‚˜ํ๋ธŒ์˜ ๋ถ„์„ ๊ธฐ์ค€์€ ์•„๋ž˜์™€ ๊ฐ™์•„์š”.

๋ถ„์„ ๊ธฐ์ค€ ์ข…๋ฅ˜ ์ƒ์„ธ ๋‚ด์šฉ
์ฝ”๋“œ ์•…์ทจ(Maintainability) ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ, ๋ชจ๋“ˆ์„ฑ, ์ดํ•ด ๊ฐ€๋Šฅ์„ฑ, ํ…Œ์ŠคํŠธ ์šฉ์˜์„ฑ, ์žฌ ์‚ฌ์šฉ์„ฑ ๋“ฑ ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋Š” ์•„๋‹ˆ๋‚˜, ์‚ฌ์†Œํ•œ ๋ฌธ์ œ๋“ค
Bug ์ž ์žฌ์  ๋ฒ„๊ทธ ํ˜น์€ Runtime ๋‹น์‹œ ์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” Code
์ทจ์•ฝ์  Cracker์—๊ฒŒ ์ž ์žฌ์  ์•ฝ์ ์ด ๋  ์ˆ˜ ์žˆ๋Š” ๋ณด์•ˆ์ƒ ๋ฌธ์ œ.
SQL Injection, Cross Site Script ๊ณต๊ฒฉ๊ณผ ๊ฐ™์€ ๋ณด์•ˆ ์ทจ์•ฝ์„ฑ์„ ์ฐพ๋Š”๋‹ค.
์ค‘๋ณต ์ฝ”๋“œ ํ’ˆ์งˆ ์ €ํ•ด ์‹œํ‚ค๋Š” ๊ฐ€์žฅ ํฐ ์š”์ธ ์ค‘ ํ•˜๋‚˜
๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ํ…Œ์ŠคํŠธ์˜ ์„ฑ๊ณต / ์‹คํŒจ ์ •๋ณด ์ œ๊ณต
๋ณต์žก๋„ ์ˆœํ™˜ ๋ณต์žก๋„ ์ธก์ •, ์ฝ”๋“œ ๋…ผ๋ฆฌ์  ํ๋ฆ„ ์ƒ ์กด์žฌํ•˜๋Š” ์ธ์ง€ ๋ณต์žก๋„ ์ธก์ •
์‚ฌ์ด์ฆˆ ์ฝ”๋“œ ๋ผ์ธ ์ „์ฒด ๋ผ์ธ ์ˆ˜ ๊ตฌ๋ฌธ, ํ•จ์ˆ˜ / ํด๋ž˜์Šค, Directory, ์ฃผ์„ ์ˆ˜, ์ฝ”๋ฉ˜ํŠธ ๋น„์œจ ๋“ฑ
์ฝ”๋“œ ํฌ๊ธฐ์™€ ๊ด€๋ จ๋œ ๋‹ค์–‘ํ•œ ์ง€ํ‘œ ์ œ๊ณต
728x90



 

 

 

    ๐Ÿ”ฝ ๊ตฌ์„ฑ

        ๐Ÿ“ฆ ์„ค์น˜

์ฃผ๋‹ˆ๊ฐ€ ์„ค์น˜ ๋ฐ ๊ตฌ์ถ•ํ•˜๋ ค๋Š” ์†Œ๋‚˜ํ๋ธŒ์— ๋Œ€ํ•ด ์–ด๋Š์ •๋„ ์•Œ์•˜์œผ๋‹ˆ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์„ค์น˜ ์ง„ํ–‰ํ•ด ๋ณผ๊ฒŒ์š”.
Docker ์•ˆ์— ์†Œ๋‚˜ํ๋ธŒ ๊ด€๋ จํ•œ Image๋Š” ๊ต‰์žฅํžˆ ๋‹ค์–‘ํ•˜๊ฒŒ ์กด์žฌํ•ด์š”.

ํ•˜์ง€๋งŒ, ์ฃผ๋‹ˆ๋Š” PR Decoration์„ ๋ณด๋‹ค ํŽธ๋ฆฌํ•˜๊ฒŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” mc1arke/sonarqube-with-community-branch-plugin Image๋ฅผ ํ†ตํ•ด ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•ด ๋ณด๋ ค๊ณ  ํ•ด์š”.


์ตœ์ดˆ ์•„๋ž˜์™€ ๊ฐ™์ด max virtual memory areas ์„ค์ •์˜ vm.max_map_count ๊ฐ’์„ ๋„์ปค ํ˜ธ์ŠคํŠธ ์„œ๋ฒ„์—์„œ ์˜ฌ๋ ค์ฃผ์–ด์•ผ ํ•ด์š”.

# max virtual memory areas์˜ vm.max_map_count ๊ฐ’ ํ™•์ธ ๋ช…๋ น์–ด
sysctl vm.max_map_count

 

vim /etc/sysctl.conf


๋งจ ์•„๋žซ์ค„์— ์œ„์™€ ๊ฐ™์ด ์ถ”๊ฐ€ํ•ด ์ฃผ์—ˆ์–ด์š”.

๊ทธ๋Ÿฐ ๋’ค ์ €์žฅํ•˜๊ณ  ๋‚˜์˜ต๋‹ˆ๋‹ค.

sysctl -p


์œ„ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ž…๋ ฅ์‹œ์ผœ ์ฃผ์—ˆ์–ด์š”.

 

 

docker pull mc1arke/sonarqube-with-community-branch-plugin

 

 


์ตœ์ดˆ ์œ„์™€ ๊ฐ™์ด Image๋ฅผ ๋‚ด๋ ค ๋ฐ›์•„ ์ฃผ์—ˆ์–ด์š”.

 

 

vim {Shell Script file Name}.sh

๋ฐ˜์‘ํ˜•


๊ทธ๋Ÿฐ ๋’ค ์œ„์™€ ๊ฐ™์ด Container ๊ตฌ๋™์šฉ Shell Script๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์–ด์š”. 

 

 

chmod -R 775 {Shell Script Name}.sh

 


๊ทธ๋Ÿฐ ๋’ค ๋งŒ๋“ค์–ด์ค€ Shell Script์˜ ๊ถŒํ•œ์„ ๋ณ€๊ฒฝํ•ด ์ฃผ์—ˆ์–ด์š”.

 

 

./{Shell Script Name}.sh

 


ํ•ด๋‹น Shell Script๋ฅผ ์ž‘๋™ ์‹œ์ผœ Container๋ฅผ ๊ตฌ๋™ ์‹œ์ผœ ์ฃผ์—ˆ์–ด์š”.

 

 

 

์ดˆ๊ธฐ ๊ณ„์ •: admin // admin

 


๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ํ•ด๋‹น Docker Container Host OS IP์ฃผ์†Œ์™€ Container์— ์„ค์ •ํ•œ Port ๋ฒˆํ˜ธ๋ฅผ ํ†ตํ•ด ์ ‘์†ํ•  ์ˆ˜ ์žˆ์–ด์š”.

 

 

 


์ตœ์ดˆ ์ ‘์†์„ ์‹œ๋„ํ•˜๋ฉด ์œ„์™€ ๊ฐ™์ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ฐ”๊พธ๋ผ๊ณ  ํ•  ๊ฑฐ์—์š”.
๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•ด ์ค„๊ฒŒ์š”.



Plugin์ด ๋ฐœ๊ฒฌ ๋˜์—ˆ๋‹ค๋Š” ๊ฒฝ๊ณ ์—์š”.

์ด๋Š” ๊ณต์‹์ ์œผ๋กœ ์†Œ๋‚˜ํ๋ธŒ๊ฐ€ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” Plugin์ธ sonarqube-with-community-branch-plugin์ด ์„ค์น˜๋œ ์†Œ๋‚˜ํ๋ธŒ๋ฅผ ์„ค์น˜ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์˜ค๋Š” ๊ฒƒ์ด์—์š”.

I understand the risk๋ฅผ ๋ˆ„๋ฅด๊ณ  ๋„˜์–ด ๊ฐ‘๋‹ˆ๋‹ค.



์ •์ƒ์ ์œผ๋กœ ์„ค์น˜๊ฐ€ ์™„๋ฃŒ ๋˜์—ˆ์–ด์š”.

 

 

 

        ๐Ÿ“ฆ ๋ถ€๊ฐ€ ์„ค์ •

์ด๋ฒˆ์—๋Š” ๋ณด๋‹ค ํŽธ๋ฆฌํ•œ ์‚ฌ์šฉ์„ ์œ„ํ•ด ํ•œ๊ธ€ํŒฉ์„ ์„ค์น˜ํ•ด ๋ณด๋„๋ก ํ• ๊ฒŒ์š”.

 

 

Administration -> Marketplace -> ๊ฒ€์ƒ‰์ฐฝ: korean -> Install

 

 


์œ„์™€ ๊ฐ™์ด ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•ด ์ค๋‹ˆ๋‹ค.



์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด Restart Server๋ฅผ ๋ˆŒ๋Ÿฌ ํ•ด๋‹น Container๋ฅผ ์žฌ๋ถ€ํŒ… ํ•ด ์ค๋‹ˆ๋‹ค.
์ด ๋•Œ, Container๊ฐ€ ์žฌ ๋ถ€ํŒ…๋˜๋Š” ๊ฒƒ์ด์ง€ Host ์žฅ๋น„๊ฐ€ ์žฌ๋ถ€ํŒ… ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์—์š”.



์žฌ๋ถ€ํŒ…์ด ๋˜๊ณ  ๋‚˜๋ฉด ์ด๋ ‡๊ฒŒ Login์ฐฝ์ด ๋‹ค์‹œ ๋ณด์ผํ…๋ฐ, ๋ฒŒ์จ ํ•œ๊ธ€์ด ๋ณด์ด๋Š” ๊ฑฐ ๋ณด์ด์‹œ๋‚˜์š”?



์ด๋ ‡๊ฒŒ ํ•œ๊ธ€ํŒฉ๊นŒ์ง€ ์ดˆ๊ธฐ ์„ค์ •์„ ๋ชจ๋‘ ๋งˆ๋ฌด๋ฆฌ ํ•˜์˜€์–ด์š”.











๐Ÿง ์ฐธ๊ณ  ์ž๋ฃŒ

https://junyharang.tistory.com/368

 

 

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•