λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

κ°œλ°œκ³΅λΆ€/AWS πŸ›°οΈ

CI/ CD + Github Actions & AWS EC2

728x90

좜처 : 내일배움캠프

 

1) CI(Continuous Integration) : 지속적 톡합 ~ μ—¬λŸ¬ κ°œλ°œμžκ°€ ν•˜λ‚˜μ˜ ν”„λ‘œμ νŠΈλ₯Ό 같이 κ°œλ°œν•  λ•Œ λ°œμƒν•˜λŠ” 뢈일치 μ΅œμ†Œν™”

-> CIλ₯Ό μ œλŒ€λ‘œ κ΅¬ν˜„ν•˜λ©΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ³€κ²½ 사항 반영 μ‹œ μžλ™μœΌλ‘œ λΉŒλ“œ 및 ν…ŒμŠ€νŠΈλ˜μ–΄ 잘λͺ»λœ μ½”λ“œκ°€ κ³΅μœ λ˜λŠ” 것을 방지

μ½”λ“œμ˜ μ‹ λ’°μ„± 증진

 

2) CD(Continuous Deployment) : 지속적 배포 ~ ν”„λ‘œμ νŠΈμ˜ 변경사항을 가상 ν™˜κ²½μ— μžλ™μœΌλ‘œ 배포

-> CDλ₯Ό ꡬ성해두면 변경사항을 배포할 λ•Œ μ‚¬μš©ν•˜λŠ” νŒŒμ΄ν”„ 라인을 κ³΅μœ ν•˜μ—¬ λ²ˆκ±°λ‘œμ›€μ„ 없앨 수 μžˆλ‹€

배포 ν”Œλ‘œμš°μ˜ 동기화

 

Github Actions : κΉƒν—™μ—μ„œ μ œκ³΅ν•˜λŠ” CI/CD 툴

+JAVA CI with Gradle : gradle.yml μˆ˜μ •ν•˜κΈ°

on : μ›Œν¬ν”Œλ‘œμš° μˆ˜ν–‰ν•  이벀트

jobs: μˆ˜ν–‰ν•  μ›Œν¬ν”Œλ‘œμš°

 

κΉƒν—™ μ•‘μ…˜μ„ μ‚¬μš©ν•΄ AWS EC2에 λ°°ν¬ν•˜κΈ°

  1. Github Actions μ—μ„œ AWS 에 λ°°ν¬ν•˜λŠ” 방법
  2. AWS EC2 μ„€μ • μΆ”κ°€
  3. AWS S3 버킷 생성
  4. AWS CodeDeploy μ•± 생성 및 배포 μ„€μ •
  5. Github Actions μ—μ„œ μ‚¬μš©ν•  μ‚¬μš©μž κΆŒν•œ μΆ”κ°€
  6. AppSpec 파일 μž‘μ„±
  7. 배포 슀크립트 μž‘μ„±
  8. Github Actions Workflow μž‘μ„±
  9. Github μ—μ„œ push 둜 λ°°ν¬ν•˜κΈ°

Main λΈŒλžœμΉ˜μ— Push ν•˜λ©΄ μžλ™μœΌλ‘œ EC2κΉŒμ§€ λ°°ν¬λ˜λŠ” Workflow ~ μ†ŒμŠ€μ½”λ“œλ₯Ό μ••μΆ•ν•˜μ—¬ AWS μŠ€ν† λ¦¬μ§€μ— μ €μž₯ ν›„ μ„œλ²„μ— 전달해 μ‹€ν–‰ν•œλ‹€

큰 흐름을 μš”μ•½ν•˜λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  1. Github Actions μ—μ„œ μ½”λ“œ λΉŒλ“œ (ν…ŒμŠ€νŠΈλŠ” CI μ—μ„œ ν–ˆλ‹€κ³  κ²€μ¦ν–ˆλ‹€κ³  νŒλ‹¨ν•˜μ—¬ μƒλž΅)
  2. AWS 인증
  3. μ½”λ“œ μ••μΆ•ν•΄μ„œ AWS S3 에 μ—…λ‘œλ“œ
  4. AWS CodeDeploy μ‹€ν–‰ν•˜μ—¬ S3 에 μžˆλŠ” μ½”λ“œ EC2 에 배포

κΉƒν—ˆλΈŒ ν”„λ‘œμ νŠΈ μ½”λ“œλ₯Ό AWS S3에 μ—…λ‘œλ“œ ν•œ ν›„ AWS EC2μ—μ„œ λŒμ–΄λ‹€ μ“°λŠ” 것이 κ°€μž₯ 핡심,

AWS CodeDeployλŠ” κ·Έκ±Έ 보쑰

 

EC2 μ„€μ • μΆ”κ°€

1. Tag μΆ”κ°€(CodeDeployμ—μ„œ μ–΄λ–€ μΈμŠ€ν„΄μŠ€μ— μ‹€ν–‰ν•  지 κ΅¬λΆ„ν•˜λŠ” κ°’)

2. IAM μ—­ν•  등둝

3. EC2 μ„œλ²„μ— CodeDeploy Agent μ„€μΉ˜

 

AWS S3 생성

버킷 생성

일반 ꡬ성과 객체 μ†Œμœ κΆŒ μ„€μ •

μ—‘μ„ΈμŠ€, 버킷 버전, μ•”ν˜Έν™” λΉ„ν™œμ„±ν™”

CodeDeploy 생성

CodeDeploy μ „μš© IAM μ—­ν•  λ§Œλ“€κΈ°

CodeDeploy μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 생성

CodeDeploy 배포그룹 생성

Github Actionsμ—μ„œ μ‚¬μš©ν•  IAM μ‚¬μš©μž μΆ”κ°€

μ‚¬μš©μž 이름, μ—‘μ„ΈμŠ€ μœ ν˜•, μ ‘κ·Ό κΆŒν•œ μ„€μ •

Access Key, Secret Key 생성

κΉƒν—™ λ ˆν¬μ§€ν† λ¦¬μ—μ„œ μ‹œν¬λ¦Ώ μΆ”κ°€

AppSpec 파일 μž‘μ„±

files μ„Ήμ…˜

permissions μ„Ήμ…˜

hooks μ„Ήμ…˜

배포 슀크립트 μž‘μ„±

stop.sh

start.sh

build.gradle 파일 μˆ˜μ •

κΉƒν—™ μ•‘μ…˜ μ›Œν¬ν”Œλ‘œμš° μž‘μ„±

sample workflow -> deploy.yml μž‘μ„±

κΉƒν—™ μ•‘μ…˜ μ‚¬μš©ν•˜μ—¬ λ°°ν¬ν•˜κΈ°

repoμ—μ„œ 확인

AWS codedeployμ—μ„œ 확인

EC2 μ„œλ²„μ—μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰ 확인

 

 

 

728x90