[기초] CI & CD

Hailey·2022년 10월 18일
0

CI란?

CI란 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미한다.

간단히 말하면 빌드/테스트 자동화 과정을 말한다.

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

지속적 통합의 실행은 소스/버전 관리 시스템에 대한 변경 사항을 정기적으로 커밋하여 모든 사람에게 동일 작업 기반을 제공하는 것으로 시작한다.

커밋할 때마다 빌드와 일련의 자동 테스트가 이루어져 동작을 확인하고 변경으로 인해 문제가 생기는 부분이 없도록 보장한다.

지속적 통합은 그 자체로 유익하지만 CI/CD 파이프라인을 구현하기 위한 첫번째 단계이기도 하다.

  • CI 단계
    1. 코드 변경사항을 메인 리파지토리에 주기적으로 빈번하게 머지해야 한다.
    2. 통합을 위한 단계(빌드, 테스트, 머지)의 자동화를 통해
  • 장점 문제점을 빠르게 발견 ⇒ 버그 수정 용이 ⇒ 개발 향상성 향상 & 코드의 퀄리티 향상

CD란?

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

간단히 말하면 배포 자동화 과정을 말한다.

지속적 배포(Continuous Deployment)는 빌드, 테스트 및 배포 단계를 자동화하는 DevOps 방식을 논리적 극한까지 끌어 올린다. 코드 변경이 파이프라인의 이전 단계를 모두 성공적으로 통과하면 수동 개입 없이 해당 변경 사항이 프로덕션에 자동으로 배포된다. 지속적 배포를 채택하면 품질 저하 없이 최대한 빨리 사용자에게 새로운 기능을 제공할 수 있다.

  • CI/CD를 위한 tools

    → Jenkins, Buildkite, GitHub Actions…

  • 깃허브 Actions

    특정한 이벤트가 발생했을 때 내가 원하는 일을 자동으로 수행할 수 있도록 하는 툴이다.

    • Event, Workflows, Jobs, Actions, Runners

    • Event : gitHub에서 발생하는 대부분의 일을 이벤트로 설정할 수 있다.

      ex. main 브랜치로 머지, 커밋을 푸쉬, 이슈…

    • Workflow : 자동화하고 싶은 것들을 설정한다. workflow 안에는 Job이 들어있다. Job은 기본적으로는 병렬적으로 실행되지만 순차적으로 실행되게도 설정할 수 있다.

    • Job : Job 안에서는 깃허브에서 제공하는 유용한 Actions들을 사용할 수 있다.

profile
팀에서 꼭 필요한 프론트엔드 개발자가 되고 싶습니다.

0개의 댓글