히치키치

이상청 : Github actions 이용한 AWS 배포 CI/CD 본문

이상청

이상청 : Github actions 이용한 AWS 배포 CI/CD

히치키치 2022. 8. 6. 19:21

CI/CD 

💙 어플리케이션 개발 단계부터 배포까지 자동화를 통해 효율적이고 빠르게 사용자에게 빈번히 배포할 수 있는 것

파이프라인

Code ⇒ Build ⇒ Test ⇒ Release ⇒ Deploy

 

CI : Continuous Integration

  1. 코드 변경 사항을 주기적으로 빈번하게 머지함
  2. 통합을 위한 단계 (빌드, 테스트, 머지)의 자동화
    1. 주기적으로 머지된 코드의 변경 사항이 자동으로 빌드가 되어야 함
    2. 코드 변경 사항 이후에도 코드의 빌드 성공 여부 확인되어야 함
    3. 코드 변경 사항으로 인해 기존 시스템에 버그 초래 여부 테스팅 진행함

→ 개발 생산성 향상, 빠른 코드 결함과 문제점 발견으로 인한 버그 수정 용이

 

CD : Continuous Delivery / Continuous Deployment

  1. Continuous Delivery
    1. CI 통해 주기적으로 머지된 변경사항이 자동으로 빌드와 테스팅이 완료되었다면 Prepare Release 거침
    2. 준비된 Release가 문제가 없는지 직접 검증하고 수동적으로 Release를 deploy함
  2. Continuous Deployment
    1. CI 통해 주기적으로 머지된 변경사항이 자동으로 빌드와 테스팅이 완료되었다면 Prepare Release 거침
    2. Release가 준비가 되자마자 자동으로 사용자에게 배포되도록 함→ 최종 단계 자동화 여부/범위에 따라 Delivery와 Deployment 구분

Github Action을 통한 CI/CD

💙 개발 프로세스 핵심 : 자동화

개발환경 :

Git (버전 관리 시스템) + Github (Git 배포) + Github Actions (Jenkins, BuildKite 등 별도의 외부 툴 필요)

 

Github Actions 개념

1. Events

  • 어떤 일이 발생했는 지 지정
  • 예시) Main Branch로 머지, 커밋 푸시, 이슈 Open

2. Workflows

  • 특정 이벤트 발생 시 내가 자동화 실행하고 싶은 스크립트 작성
  • Workflow > 한개 이상Jobs 존재 > Steps 명시

3. Jobs & Steps

  • Jobs : 병렬적 동시 다발적으로 수행됨 (순차적 수행 설정 가능)
  • Steps : 어떤 순서대로 Job이 실행되어야 하는지 단계 명시예시) Shell Script 작성, npm, Github Actions

4. Actions

  • Runners각각의 job은 개별적인 독립적인 컨테이너에서 실행됨
  • 예시) VM, Docker Container

Github Actions 예시 코드 분석

.github/workflows/workflow.yml

1. name : 어떤 workflow인지 이름 명시 → Publish 워크플로우

2. on : 어떤 이벤트가 발생 시 workflow 실행되는지 명시 → main 브랜치에 푸시 발생 시 해당 워크 플로우 실행

3. Jobs : 해당 이벤트 발생 시 어떤 jobs이 실행되는지 명시 → build (job 이름) 수행

  • runs-on : 어떤 VM 사용하는지 명시 : 우분투 최신 버전 사용
  • steps : 어떤 순서대로 수행해야하는지 명시
    - name : checkout source code (steps 이름) 수행
    - uses : 수행 명령어 : 깃허브 액션에서 main checkout 하기

프론트엔드 인프라 구축 전략

💙 가비아 도메인 + S3 + CloudFront + Route53 + ACM 사용해 https 배포

인프라 구축 전략에 따른 CI/CD PipeLine

1. Continuous Integration

2. Continuous Deployment

 

Cl/CD PipeLine에 맞는 Github-Actions Workflow 생성

Github Repo Workflow 확인 해보기

main branch 푸시 Event에 따른 Workflow 실행
Main 브랜치 푸시에 따른 Github Action 실행 결과 이력 확인 가능

Github Repo ReadMe에 Workflow 현황 배지

Comments