[CI/CD] CI/CD&Github Action

Yuni·2022년 10월 12일
0

코드스테이츠

목록 보기
38/39

CI/CD

CI(Continuous Integration)

CI는 개발자를 위한 자동화 프로세스인 지속적인 통합을 의미하며 Code-Build-Test단계가 있다. 지속적 통합으로 머지 전 빌드 오류나 테스트 오류를 확인하여 보안 이슈, 에러 등을 쉽게 파악할 수 있어 해당 이슈를 빠르게 개선할 수 있다.

  • Code : 개발자가 코드를 원격 코드 저장소에 push하는 단계
  • Build : 원격 코드 저장소로부터 코드를 가져와 유닛 테스트 후 빌드하는 단계
  • Test : 코드 빌드의 결과물이 다른 컴포넌트와 잘 통합되는 지 확인하는 과정

CD(Continuous Delivery)

CD는 지속적인 서비스 제공 및/또는 지속적인 배포(Continuous Deployment)를 의미하며 이 두 용어는 상호 교환적으로 사용된다.

지속적인 배포의 경우 코드 변경 사항의 병합부터 프로덕션에 적합한 빌드 제공에 이르는 모든 단계로 테스트 자동화와 코드 릴리스 자동화가 포함된다.

  • Release : 배포 가능한 소프트웨어 패키지를 작성
  • Deploy : 프로비저닝을 실행하고 서비스를 사용자에게 노출(실질적인 배포)
  • Operate : 서비스 현황을 파악하고 생길 수 있는 문제를 감지

CI/CD의 영역

CI/CD는 지속적 통합 및 지속적 제공의 구축 사례만을 지칭할 때도 있고 지속적 통합, 지속적 제공, 지속적 배포라는 3가지 구축 사례 모두를 의미할 때도 있다. 좀 더 복잡하게 설명하면 지속적인 서비스 제공은 때로 지속적인 배포의 과정까지 포함하는 방식으로 사용되기도 한다.

결과적으로 CI/CD는 파이프라인으로 표현되는 실제 프로세스를 의미하고 애플리케이션 개발에 지속적인 자동화 및 지속적인 모니터링을 추가하는 것을 의미한다. 이 용어는 사례별로 CI/CD 파이프라인에 구현된 자동화 수준 정도에 따라 그 의미가 달라진다.

배포 자동화

배포 자동화란 한번의 클릭 혹은 명령어 입력을 통해 전체 배포 과정을 자동으로 진행하는 것을 뜻한다.

배포 자동화의 필요성

  • 수동적이고 반복적인 배포 과정을 자동화함으로써 시간이 절약됨
  • 휴먼 에러(수동 배포 과정 중 생기는 에러)를 방지할 수 있음

CI/CD 파이프라인

배포에서 파이프라인이란 소스 코드의 관리부터 실제 서비스로의 배포 과정을 연결하는 구조를 뜻한다. 파이프라인은 전체 배포 과정을 여러 단계로 분리한다. 각 단계는 파이프라인 안에서 순차적으로 실행되며 각 단계마다 주어진 작업들을 수행한다.

파이프라인에서 대표적으로 쓰이는 단계

  • Source: Source 단계에서는 원격 저장소에 관리되고 있는 소스 코드에 변경 사항이 일어날 경우 이를 감지하고 다음 단계로 전달하는 작업을 수행한다.
  • Build: Build 단계에서는 Source 단계에서 전달받은 코드를 컴파일, 빌드, 테스트하여 가공한다. 또한 Build 단계를 거쳐 생성된 결과물을 다음 단계로 전달하는 작업을 수행한다.
  • Deploy: Deploy 단계에서는 Build 단계로부터 전달받은 결과물을 실제 서비스에 반영하는 작업을 수행한다.

CI/CD 파이프라인 구성 요소 및 장점

  • 빌드 (소프트웨어 컴파일)
  • 테스트 (호환성 및 오류 검사)
  • 릴리스 (버전 제어 저장소의 애플리케이션 업데이트)
  • 배포 (개발에서 프로덕션 환경으로의 변환)
  • 규정 준수 및 유효성 검사

Github Action

Github Action이란?

GitHub Actions는 Github가 공식적으로 제공하는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD 플랫폼이다.

레포지토리에서 Pull Request나 push같은 이벤트를 트리거로 GitHub 작업 워크플로를 구성할 수 있다. 워크플로는 하나 이상의 작업이 실행되는 자동화 프로세스로 각 작업은 자체 가상 머신 또는 컨테이너 내부에서 실행된다.

워크플로는 .yml (혹은 .yaml ) 파일에 의해 구성되며 테스트, 배포 등 기능에 따라 여러개의 워크플로도 만들 수 있다. 생성된 워크플로는 .github/workflows 디렉토리 이하에 위치한다.

배포 링크

profile
배운 것을 기억하기 위해 기록합니다 😎

0개의 댓글