DevOps/AWS

CI/CD : GitHub Actions, EC2, RDS๋ฅผ ํ™œ์šฉํ•œ ์ž๋™ ๋ฐฐํฌ ํŒŒ์ดํ”„ ๋ผ์ธ ๊ตฌ์ถ•ํ•˜๊ธฐ 2ํŽธ

ํ”„๋กœ๊ทธ๋ž˜๋จธ ์˜ค์›” 2023. 11. 28.

 

์ด๋ฒˆ ๊ธ€์€ ์ €๋ฒˆ๊ธ€์—์„œ ์ด์–ด์ง€๋‹ˆ ์ €๋ฒˆ๊ธ€์„ ์•„์ง ๋ณด์ง€ ์•Š์€ ๋ถ„๋“ค์€ ์ €๋ฒˆ๊ธ€์„ ์ฝ์–ด์ฃผ์„ธ์š”.

https://programmer-may.tistory.com/172

 

GitHub Actions, EC2, RDS๋ฅผ ํ™œ์šฉํ•œ ์ž๋™ ๋ฐฐํฌ ํŒŒ์ดํ”„ ๋ผ์ธ ๊ตฌ์ถ•ํ•˜๊ธฐ 1ํŽธ

์ง€๋‚œ๋ฒˆ ํ˜ผ์ž์„œ ๋™๋™๋Œ€๊ณ  ์ง€์ธ์—์„œ ๋ฌผ์–ด๋ด์„œ develop ๋ธŒ๋žœ์น˜์˜ ์ž๋™๋ฐฐํฌ ํŒŒ์ดํ”„ ๋ผ์ธ์„ ๊ตฌ์ถ•ํ•ด ๋ณด์•˜๋‹ค. ์ด๋ฒˆ์—” ํ˜ผ์ž์„œ ์‹ค์ „ ๋А๋‚Œ์œผ๋กœ release ๋ธŒ๋žœ์น˜์˜ ์ž๋™ ๋ฐฐํฌ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ๋‹ค. ๋จผ์ € ์‚ฌ์šฉํ•˜

programmer-may.tistory.com

 


 

 

์ €๋ฒˆ์— OpenSSH key๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ ๊นŒ์ง€ ํ–ˆ๋‹ค. ์ด์   ๋‚˜์˜ EC2 ์„œ๋ฒ„์— ๋“ค์–ด๊ฐ€์„œ Open JDK ๋ฅผ ๊น”์•„ ๋‚˜์˜ JAR ํŒŒ์ผ์ด ์‹คํ–‰ ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ฒ ๋‹ค. (์ถ”๊ฐ€์ ์œผ๋กœ MySQL ํด๋ผ์ด์–ธํŠธ๊นŒ์ง€ ๋‹ค์šด)

 

SSH ํด๋ผ์ด์–ธํŠธ ํˆด๋กœ MobaXterm ์„ ์‚ฌ์šฉํ–ˆ๋‹ค. MobaXterm ๋Š” SSH ์ ‘์†์„ ํ•˜์—ฌ CLI ๋กœ ๋ช…๋ น์–ด๋„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๊ณ , SFTP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ GUI ํ™˜๊ฒฝ์—์„œ ํŒŒ์ผ์„ ์‰ฝ๊ฒŒ ํƒ์ƒ‰ํ•˜๊ณ  ์ „์†ก๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. MobaXterm ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด SSH ์ ‘์† ํˆด๊ณผ FTP ํˆด ๋‘๊ฐ€์ง€๋ฅผ ๊ฐ™์ด ์จ์ค˜์•ผํ–ˆ์„ํ…๋ฐ,  MobaXterm์„ ํ†ตํ•ด ์ด๋ฅผ ํ•œ๋ฒˆ์— ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋๋‹ค. ๋‹จ์ ์ด ํ•˜๋‚˜ ์žˆ๋‹ค๋ฉด, Window OS ์—์„œ๋งŒ ๊ฐ€๋Šฅํ•ด์„œ Mac OS ๋Š” Termius ๋“ฑ ๋‹ค๋ฅธ ํˆด์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. Filezilla ๋„ CLI ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด๊ฑด ๊ตฌ๋…ํ•˜์—ฌ ์œ ๋ฃŒ๋ฒ„์ „์ผ ๋•Œ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

MobaXterm(SSH ์›๊ฒฉ์ ‘์† ํ”„๋กœ๊ทธ๋žจ)์„ ๋‹ค์šด๋กœ๋“œ ํ•ด์ค€๋‹ค.

 

https://mobaxterm.mobatek.net/download-home-edition.html

 

MobaXterm free Xserver and tabbed SSH client for Windows

The ultimate toolbox for remote computing - includes X server, enhanced SSH client and much more!

mobaxterm.mobatek.net

๋‹ค์šด๋กœ๋“œ ์‚ฌ์ดํŠธ(ํ•„์ž๋Š” Portable edition์„ ๋‹ค์šด ๋ฐ›๊ธดํ–ˆ๋‹ค.)

 

 

MobaXterm์„ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™”๋ฉด์„ ๋ณด๊ฒŒ ๋œ๋‹ค.

 

 

 

 

 

 

Session ์„ ๋ˆ„๋ฅด๊ณ  SSH  ํด๋ฆญํ•œ๋‹ค,

1 :  EC2์˜ ํผ๋ธ”๋ฆญ DNS ์ฃผ์†Œ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.

2 : ์ฒดํฌ๋ฐ•์Šค๋ฅผ ํด๋ฆญํ•˜๊ณ , ubuntu ๋กœ ๋งŒ๋“ค์–ด ์คฌ์œผ๋‹ˆ ubuntu๋ผ๊ณ  ๊ธฐ์ž…ํ•œ๋‹ค.

3: ์ฒดํฌ๋ฐ•์Šค ํด๋ฆญํ›„ ํŒŒ์ผ์„ ๋ˆŒ๋Ÿฌ OpenSSH ํ‚ค๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค. (์ด ๊ณผ์ •์„ ๋ชจ๋ฅด๊ฒ ์œผ๋ฉด ์ƒ๋‹จ ๋ธ”๋กœ๊ทธ ๋งํฌ ํ™•์ธ)

๋‹ค์šด ๋ฐ›์€ PEM ํ‚ค ๋˜๋Š”  PPK ํ‚ค๋ฅผ PuTTY๋ฅผ ํ†ตํ•ด ์–ป์€ OpenSSH ํ‚ค

 

 

 

 

๋ชจ๋‘ ๊ธฐ์ž… ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์•„์ง€๊ณ  ok๋ฅผ ๋ˆ„๋ฅธ๋‹ค.

 

๊ทธ๋Ÿผ SSH ํ†ต์‹ ์˜ 22ํฌํŠธ๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค๋Š” ๋ฌธ๊ตฌ๊ฐ€ ๋‚˜์˜ค๊ณ  Accept๋ฅผ ๋ˆ„๋ฅธ๋‹ค.

 

 

๋ช…๋ น์–ด๋ฅผ ์ณ์„œ cicd ํด๋”๋ฅผ ๋งŒ๋“ ๋‹ค.

์ด๊ณณ์— jar ํŒŒ์ผ์„ ๋‘์–ด ์ž๋™ ์‹คํ–‰ ์‹œํ‚ฌ ๊ฒƒ์ด๋‹ค.

 

$ sudo apt update
$ sudo apt install openjdk-17-jdk

 

๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ณ์„œ EC2 ์„œ๋ฒ„์— JDK 17์„ ์„ค์น˜ํ•œ๋‹ค. ํ•„์ž๋Š” ์ž๋ฐ” 17์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋”ฉํ•˜์˜€๊ธฐ์— 17์„ ๋‹ค์šด ๋ฐ›์ง€๋งŒ, 11์ด๋‚˜ 8์„ ์“ด ์‚ฌ๋žŒ๋“ค์€ 11์ด๋‚˜ 8์„ ๋‹ค์šด ๋ฐ›์•„๋„ ๋ฌด๋ฐฉํ•˜๋‹ค.

์ค‘๊ฐ„์ค‘๊ฐ„ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฒœ์ฒœํžˆ ์ง„ํ–‰ํ•œ๋‹ค.

 

$ java -version

 

๋ช…๋ น์–ด๋ฅผ ์ณ์„œ ์ž๋ฐ” ๋งž๋Š” ๋ฒ„์ „์ด ์ž˜ ๋‹ค์šด ๋ฐ›์•„ ์กŒ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

 

 

 

which java

 

๋ช…๋ น์–ด๋กœ java ์„ค์น˜ ์œ„์น˜๊นŒ์ง€ ํ™•์ธํ•œ๋‹ค.

 

 

์ด์   ์ถ”ํ›„์— MySQL์„ ๋ช…๋ น์–ด ํ”„๋กฌํ”„ํŠธ์—์„œ ์กฐ์ž‘ํ•ด์•ผํ• ์ง€๋„ ๋ชจ๋ฅด๋‹ˆ,,, MySQL Client๋„ ๋‹ค์šด ๋ฐ›๋Š”๋‹ค.

 

 

 

 

์ด์   Repository secrets๋ฅผ ์„ค์ •ํ•ด ๋‘˜๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ์„ค์ •ํ•œ๋Œ€๋กœ cd-release.yml ํŒŒ์ผ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์ ‘์†์ด ์ผ์–ด๋‚  ๊ฒƒ์ด๋‹ค.

๊ธฐ์กด์— ์žˆ๋Š” ๊ฑธ๋กœ ์„ค๋ช…ํ•˜๋ฉด 

DEVELOP_APPLICATION_YML ์€ application.yml ํŒŒ์ผ ๋ฎ์–ด์“ธ ํŒŒ์ผ๋กœ, ๋ฐ์ดํ„ฐ ์†Œ์Šค ๊ฒฝ๋กœ ๊ทธ๋ฆฌ๊ณ  ๊ณ„์ •๋ช… ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋„ฃ์–ด์ค˜์•ผํ•œ๋‹ค.

 

๊ทธ๋Ÿผ ์—ฌ๊ธฐ์— ์ •๋ณด๋ฅผ ๋„ฃ์„  RDS ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๋Ÿฌ ๊ฐ€์ž.

 

AWS ์‚ฌ์˜ RDS ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ๊ฒƒ์ด๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ์„ ํด๋ฆญํ•œ๋‹ค.

 

 

์šฐ๋ฆฐ MySQL์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ฏ€๋กœ MySQL์„ ํƒํ•œ๋‹ค.

 

 

 

 

๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์„ ์ ๊ณ , ๋ฐ์ดํ„ฐ ์†Œ์Šค์˜ username์— ํ•ด๋‹นํ•˜๋Š” ๋งˆ์Šคํ„ฐ ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์ ๋Š”๋‹ค. 

 

 

 

 

์ค‘์š”ํ•œ ์•”ํ˜ธ๋„ ์ ๋Š”๋‹ค. 

๋ฐ์ดํ„ฐ ์†Œ์Šค์˜ password ์— ํ•ด๋‹นํ•œ๋‹ค.

 

 

 

๋Œ€๋ถ€๋ถ„์˜ ๊ฒƒ๋“ค์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ํ•˜๊ณ  ์ปดํ“จํŒ… ๋ฆฌ์†Œ์Šค๋Š” ์—ฐ๊ฒฐ ์•ˆํ•จ์œผ๋กœ ํ–ˆ๋‹ค.

develop ๋ธŒ๋žœ์น˜์˜ ํ…Œ์ŠคํŠธ ์„œ๋ฒ„๋Š”  ํ•ด๋‹น EC2์™€ ์—ฐ๋™ํ•ด ๋†จ์ง€๋งŒ, ์ด๋ฒˆ ๋ฉ”์ธ์„œ๋ฒ„๋Š” ์—ฐ๋™ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•ด ๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

 

ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค๋Š” "์˜ˆ" ์„ค์ •ํ•˜์—ฌ ๋กœ์ปฌ์—์„œ MySQL ์›Œํฌ ๋ฒค์น˜์—์„œ๋„ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.

 

 

๋ณด์•ˆ ๊ทธ๋ฃน์€ ๊ธฐ์กด์— ๋งŒ๋“ค์–ด๋‘”๊ฒŒ ์žˆ๋‹ค๋ฉด ๊ธฐ์กดํ•ญ๋ชฉ์„ ํƒ ์ƒˆ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์œผ๋ฉด ์ƒˆ๋กœ ์ƒ์„ฑ์„ ํ•˜๋ฉด๋œ๋‹ค.

 

๋‚˜๋จธ์ง€๋Š” ๋ชจ๋‘ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ํ•˜์—ฌ RDS ์ธ์Šคํ„ด์Šค๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑํ•œ๋‹ค.

 

์ˆ˜๋ถ„์ด ์ง€๋‚˜๊ณ  ๋‚˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋งŒ๋“ค์–ด ์งˆ ๊ฒƒ์ด๋‹ค.

์ด์   ์ด ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ๋ณด์•ˆ๊ทธ๋ฃน์„ ํŽธ์ง‘ํ•ด ์ค„๊ฒƒ์ด๋‹ค. EC2 ์„œ๋ฒ„ ๋•Œ ์ฒ˜๋Ÿผ ๋ง์ด๋‹ค.

 

 

 

 

Connection Name์€ ์›ํ•˜๋Š” ๊ฑธ ์ ๋Š”๋‹ค. 

Hostname์€ ๋‚ด๊ฐ€ ๋งŒ๋“  RDS์˜ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ ์œผ๋ฉด ๋œ๋‹ค.

ํฌํŠธ๋Š” 3306ํฌํŠธ๋กœ ํ†ต์‹ ํ•˜๊ธฐ์— ๊ณ ์ •์ด๊ณ 

Username์€ ์ฒ˜์Œ ๋งŒ๋“ค ๋•Œ ๋งˆ์Šคํ„ฐ ๋„ค์ž„์ด๋‹ค. ๋‚˜์˜ ๊ฒฝ์šฐ admin ์ด๋‹ค.

Password ๋˜ํ•œ RDS ์ƒ์„ฑํ•  ๋•Œ password๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

 

 

 

 

 

๊ทธ๋Ÿฌ๋ฉด Successfully ๋ผ๊ณ  ๋œจ๋ฉด์„œ ์ปค๋„ฅ์…˜์ด ํ•˜๋‚˜ ์ƒ๊ธด๋‹ค.

 

 

์ ‘์†ํ•˜์—ฌ ์Šคํ‚ค๋งˆ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ ๋‹ค.

 

 

 

์ด์ œ ์—ฌ๊ธฐ ๊นŒ์ง€ ๋งŒ๋“ค์–ด์ค€ ์ •๋ณด๋ฅผ RELEASE_APPLICATION_YML ์— ๋„ฃ์„ ๊ฒƒ์ด๋‹ค.

 

 

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://{RDS ์—”ํŠธํฌ์ธํŠธ}:3306/{๋งŒ๋“ค์–ด๋‘” ์Šคํ‚ค๋งˆ(database๋ช…)}
    username: {์‚ฌ์šฉ์ž๋ช…}
    password: {๋น„๋ฐ€๋ฒˆํ˜ธ}
  h2:
    console:
      enabled: true
  jpa:
    show-sql: true
    hibernate:
      ddl-auto: update

server:
  port: 80

 

์œ„์™€ ๊ฐ™์€ ์ •๋ณด๋ฅผ ๋„ฃ์„ ๊ฒƒ์ด๋‹ค. ์‚ฌ์šฉ์ž๋ช…๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์›Œํฌ๋ฒค์น˜์—์„œ ์ปค๋„ฅ์…˜ ๋งบ์„ ๋•Œ ์“ฐ๋˜ Username ๊ณผ Password์™€ ๊ฐ™๋‹ค.

 

์ด์   GitHub Actions์™€ ์—ฐ๋™์„ ํ•ด๋ณด๊ฒ ๋‹ค!

 

(๋‹ค์ŒํŽธ์—์„œ ๊ณ„์†....)

๋Œ“๊ธ€