๐Ÿ’ป ๊ฐœ๋ฐœ ์ผ์ง€/Ubuntu

[Jenkins - Gitlab] Jenkins๋กœ SpringBoot + React ์ž๋™ CI/CD ๊ตฌ์ถ•ํ•˜๊ธฐ (1) jenkins ์„ค์ •

์ ์ด 2022. 4. 27. 14:22
๋ฐ˜์‘ํ˜•

๊นƒ๋žฉ repository์—์„œ ํŠน์ • ๋ธŒ๋žœ์น˜์˜ push์ด๋ฒคํŠธ๋ฅผ ๊ฐ์ง€ํ•˜์—ฌ ๋นŒ๋“œ์™€ ๋ฐฐํฌ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” CI/CD ์ ์šฉ!

1. Docker๋กœ jenkins ์„ค์น˜ํ•˜๊ณ  ์‹คํ–‰

jenkins ์ด๋ฏธ์ง€๋ฅผ pull ๋ฐ›๋Š”๋‹ค.

sudo docker pull jenkins/jenkins:lts

๋‹ค์šด๋ฐ›์€ ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰์‹œ์ผœ์ค€๋‹ค.

sudo docker run -d -p 8080:8080 -v /app/swim:/var/jenkins_home --name swim_jenkins -u root jenkins/jenkins:lts
  • -d: background๋กœ ์‹คํ–‰
  • -p: ํ˜ธ์ŠคํŠธ์˜ 8080ํฌํŠธ์™€ ๋„์ปค ๋„คํŠธ์›Œํฌ ์ƒ์˜ 8080 ํฌํŠธ๋ฅผ ์—ฐ๊ฒฐ
  • -v: ํ˜ธ์ŠคํŠธ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ํŒŒ์ผ์‹œ์Šคํ…œ ์—ฐ๊ฒฐ (/app/swim ๋””๋ ‰ํ† ๋ฆฌ์— /var/jenkins_home์„ ๋งˆ์šดํŠธ)
  • --name: ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„ ์ง€์ •
  • -u: ์‚ฌ์šฉ์ž๋ฅผ root๋กœ ์ง€์ •

jenkins ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธ

mariaDB ์ปจํ…Œ์ด๋„ˆ์™€ ๊ฐ™์ด ์ €์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ๋‹ค!

2. Jenkins ์ดˆ๊ธฐ ์„ธํŒ…

http://{HOST_NAME}:8080 ์œผ๋กœ ์ ‘๊ทผํ•˜๋ฉด password๋ฅผ ์ž…๋ ฅํ•˜๋Š” ์ฐฝ์ด ๋‚˜์˜จ๋‹ค.

์ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ๋„์ปค์˜ ๋กœ๊ทธ๋ฅผ ๋ณด๋ฉด ๋‚˜์™€์žˆ๋‹ค.

sudo docker logs swim_jenkins

๋ช…๋ น์–ด๋กœ jenkins ๋กœ๊ทธ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด

์•„๋ž˜์™€ ๊ฐ™์ด ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค.

๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด jenkins ์„ค์ • ํ™”๋ฉด์ด ๋‚˜์˜จ๋‹ค.

์—ฌ๊ธฐ์„œ ์™ผ์ชฝ ํด๋ฆญ! ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ž.

3. Gitlab ์—ฐ๋™์„ ์œ„ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜

Jenkins > Jenkins ๊ด€๋ฆฌ > ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ด€๋ฆฌ๋กœ ๋“ค์–ด๊ฐ„๋‹ค.

์„ค์น˜๊ฐ€๋Šฅ์„ ํด๋ฆญํ•ด Publish Over SSH์™€ GitLab Plugin์„ ๊ฐ๊ฐ ์„ค์น˜ํ•œ๋‹ค.
๋™์ผํ•œ ์ƒํƒœ์—์„œ ๋นŒ๋“œ๋ฅผ ์œ„ํ•œ Gradle Plugin๊ณผ NodeJS Plugin๋„ ์„ค์น˜ ํ•ด์ค€๋‹ค.

4. Jenkins ์„ค์ •

jenkins ๊ด€๋ฆฌ > ์‹œ์Šคํ…œ ์„ค์ •

Publish Over SSH ์„ค์ •

Key ํŒŒ์ผ ์ง€์ •

๋จผ์ € ์„œ๋ฒ„ ์ ‘์†์„ ์œ„ํ•œ .pem ํŒŒ์ผ ์ •๋ณด๋ฅผ ๋„ฃ๋Š”๋‹ค.

๐Ÿ’ก key์˜ ๋‚ด์šฉ์€ .pem ํŒŒ์ผ์„ visual studio์™€ ๊ฐ™์€ ์—๋””ํ„ฐ๋กœ ์—ด๋ฉด ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

SSH Servers ์ง€์ •

์•„๋ž˜ SSH Server์—๋„ ์„œ๋ฒ„์˜ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

  • Name: ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋ผ ์•„๋ฌด๋ ‡๊ฒŒ๋‚˜ ์ž…๋ ฅํ•ด๋„ ์ƒ๊ด€ ์—†๋‹ค.
  • HostName: ์„œ๋ฒ„์˜ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.
  • Username: ์„œ๋ฒ„์— ์ ‘์†ํ•  username์„ ์ž…๋ ฅํ•œ๋‹ค. (ubuntu)

Test Connection์„ ํด๋ฆญํ•˜์—ฌ ์ž˜ ๋™์ž‘ํ•˜๋Š”์ง€ ๊ผญ ํ™•์ธํ•˜์ž!

๊นƒ๋žฉ ์„ค์ •

  • Connection name: ์—ฐ๊ฒฐ ์„ค์ • ์ด๋ฆ„
  • Gitlab host URL: ๊นƒ๋žฉ ์„œ๋ฒ„์˜ ํ˜ธ์ŠคํŠธ URL(e.g. http://gitlab.mydomain.com)
  • Credential: Gitlab ์ ‘๊ทผ์— ํ•„์š”ํ•œ API ํ† ํฐ ์ •๋ณด ( ์—†์œผ๋ฉด ์˜ค๋ฅธ์ชฝ์— Add๋ฅผ ๋ˆŒ๋Ÿฌ์„œ ์ถ”๊ฐ€ํ•˜์ž ! )

  • API Token: Gitlab์—์„œ ๋ฐœ๊ธ‰๋ฐ›์€ Access Token์ž…๋ ฅ
  • ID: ์‹๋ณ„ Id ( ์•„๋ฌด๋ ‡๊ฒŒ๋‚˜ ์ž…๋ ฅ! )
  • Description: ์„ค๋ช… ( ์•„๋ฌด๋ ‡๊ฒŒ๋‚˜ ์ž…๋ ฅ! )

Test Connection์„ ํด๋ฆญํ•˜์—ฌ ์ž˜ ๋™์ž‘ํ•˜๋Š”์ง€ ๊ผญ ํ™•์ธํ•˜์ž!

Gradle ์„ค์ •

jenkins ๊ด€๋ฆฌ > Global Tool Configuraion
add Gradle ํด๋ฆญ ํ›„, ๋ฒ„์ „์— ๋งž๋Š” gradle์„ ์„ ํƒ ๋ฐ ์ €์žฅ!



์—ฌ๊ธฐ๊นŒ์ง€ ์„ค์ • ๋...!

๋ณธ๊ฒฉ์ ์ธ Item ์ž๋™ ๋นŒ๋“œ / ๋ฐฐํฌ ์„ค์ •์€ ์•„๋ž˜์—์„œ

https://doteloper.tistory.com/82

 

[Jenkins - Gitlab] Jenkins๋กœ SpringBoot + React ์ž๋™ CI/CD ๊ตฌ์ถ•ํ•˜๊ธฐ (2) Gitlab ๋ธŒ๋žœ์น˜์™€ ์—ฐ๊ฒฐ๋œ ์ž๋™ ๋นŒ๋“œ / ๋ฐฐ

์ด์ „ ๊ธ€: (1) jenkins ์„ค์ • https://doteloper.tistory.com/81 [Jenkins - Gitlab] Jenkins๋กœ SpringBoot + React ์ž๋™ CI/CD ๊ตฌ์ถ•ํ•˜๊ธฐ (1) jenkins ์„ค์ • ๊นƒ๋žฉ repository์—์„œ ํŠน์ • ๋ธŒ๋žœ์น˜์˜ push์ด๋ฒคํŠธ๋ฅผ ๊ฐ์ง€ํ•˜..

doteloper.tistory.com

 

๋ฐ˜์‘ํ˜•