[CI/CD] Github Actions & AWS Elastic Beanstalk (1)

zooyeop·2022년 1월 10일
0

CI/CD

목록 보기
1/2
post-thumbnail

CI/CD

CI (Continuous Integration)

지속적인 통합을 의미한다. CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다.

CD (Continuous Delivery & Deployment)

지속적인 제공과 배포를 의미하며 두 가지 의미 모두 파이프라인의 추가 단계에 대한 자동화를 뜻하지만 때로는 얼마나 많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용되기도 한다.

지속적인 제공이란 개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 리포지토리에 자동으로 업로드되는 것을 뜻하며, 운영팀은 이 리포지토리에서 애플리케이션을 실시간 프로덕션 환경으로 배포할 수 있다.

이러한 CI/CD로 인해 최소한의 노력으로 새로운 변경사항을 배포할 수 있고 또 그렇게 되는 것을 목표로 한다.


Github Actions

GitHub Actions는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 대표적인 CI/CD 플랫폼 중 하나다.

Workflows

깃헙 액션이 실행될 때 해당 액션이 수행할 하나의 작업 흐름 단위이다. 풀 리퀘스트 같은 이벤트가 리포지토리에서 발생할 때 트리거 되도록 GitHub 작업 워크플로를 구성할 수 있다. 워크플로에는 순차적으로 또는 병렬로 실행할 수 있는 하나 이상의 job이 포함되어 있다. YAML 파일에 의해 정의될 수 있다.

하나의 리포지토리에는 여러 워크플로가 있을 수 있으며 각 워크플로는 서로 다른 일련의 단계를 수행할 수 있다. 예를 들어 풀 요청을 빌드하고 테스트하는 워크플로, 릴리스가 생성될 때마다 애플리케이션을 배포하는 워크플로, 새 문제를 열 때마다 레이블을 추가하는 워크플로가 있을 수 있다.

Jobs

작업은 동일한 실행기에서 실행되는 워크플로의 일련의 단계다. 각 단계는 실행될 셸 스크립트이거나 실행할 작업이다. 단계는 순서대로 실행되며 서로 종속된다. 각 단계는 동일한 러너에서 실행되기 때문에 한 단계에서 다른 단계로 데이터를 공유할 수 있다. 예를 들어, 애플리케이션을 빌드 하는 단계 다음에 빌드 된 애플리케이션을 테스트하는 단계가 있을 수 있다.

다른 작업과의 종속성을 구성할 수 있다. 기본적으로 작업에는 종속성이 없으며 서로 병렬로 실행된다. 작업이 다른 작업에 종속되면 종속 작업이 완료될 때까지 기다렸다가 실행할 수 있다. 예를 들어 종속성이 없는 서로 다른 아키텍처에 대해 여러 빌드 작업과 이러한 작업에 종속되는 패키징 작업이 있을 수 있다. 빌드 작업은 병렬로 실행되며 모두 성공적으로 완료되면 패키징 작업이 실행된다.

Actions

액션은 복잡하지만 자주 반복되는 작업을 수행하는 GitHub Actions 플랫폼용 사용자 지정 응용 프로그램이다. 액션을 사용하여 워크플로 파일에 작성하는 반복적인 코드의 양을 줄일 수 있다. 작업은 GitHub에서 git 리포지토리를 가져오거나, 빌드 환경에 대한 올바른 도구 체인을 설정하거나, 클라우드 공급자에 대한 인증을 설정할 수 있다.

고유한 작업을 작성하거나 GitHub Marketplace에서 워크플로에 사용할 작업을 찾을 수 있다.

Runners

러너는 워크플로가 트리거될 때 워크플로를 실행하는 서버다. 각 러너는 한 번에 하나의 작업을 실행할 수 있다. GitHub는 워크플로를 실행할 수 있는 Linux, Windows 및 macOS 실행기를 자체적으로 제공한다. 다른 운영 체제가 필요하거나 특정 하드웨어 구성이 필요한 경우 본인이 구성한 자체 러너를 호스팅할 수도 있다.


정리
간단히 Github Actions 플랫폼과 해당 플랫폼과 관련 있는 주요 용어들을 알아보았다. 다음 편은 실제 프로젝트를 예시로 Github Actions를 이용해 어떻게 테스트 및 배포 자동화를 적용했는지 알아보자!

profile
개발 공부는 🌳 구조다…

0개의 댓글