CI/CD

Single Ko·2023년 7월 20일
0

공부하며 정리

목록 보기
12/17

많은 기업들이 개발 프로세스로 CI/CD를 사용하고 있다.

CI / CD 란?

CI - Continuous Integration 지속적인 통합
CD - Continuous Delivery (Deployment) 지속적인 제공(배포)

애플리케이션 개발 단계부터 배포까지 자동화를 통해서 조금 더 효율적이고 빠르게 빈번이 배포할 수 있도록 만드는 것.

CI

기능개발, 버그 수정 등의 여러 개발 소스를 지속적으로 메인 레포지토리에 주기적으로 빌드되고 테스트 되어서 머지되는 것을 말한다.

  1. 코드 변경 사항을 주기적으로 자주 머지해야 한다. (너무 오래 머지를 하지 않으면 버그 수정이나 컴플리트 수정)
    • 최대한 작은 단위로 나누어서 머지
  2. 통합을 위한 단계(빌드, 테스트, 머지)의 자동화

머지를 주기적으로 하게 되면 레포지토리에 머지되기 전에, 자동으로 CI 스크립트롤 통해서 Build와 TEST를 하게 되고, 성공한다면 성공적으로 머지할 수 있게 되고, 실패한다면 알림이 가게됨.

장점 - 개발 생산성 향상, 문제점을 빠르게 발견, 버그 수정 용이, => 코드 퀄리티 향상

CD

CI를 통해 빌드되고 테스트된 파일 레포지토리 머지 -> Prepare Release -> Deploy Release

이때 릴리즈 배포와 준비 단계 사이에서 직접 파일이 문제가 없는지 일일이 확인하고 배포를 수동으로 하거나, 이 단계를 자동으로 해 놓을 수 있다.

보통 이때 직접 확인을 거쳐 배포하는 것을 Continuous Delivery,
배포단계를 자동으로 하는것을 Continuous Deployment 로 나눈다고 한다.

회사마다 다 똑같은 프로세스를 거치는 것은 아니고 그 회사의 상황과 규모에 따라 다른 CI/CD 프로세스를 거친다

CI/CD는 이렇게 서로가 독립된 것이 아니고, 보통 함께 수행하는 일련의 프로세스같이 진행되기 때문에 붙여 부르는 경우가 많고, CI/CD 파이프라인의 구축은 요즘 개발 프로세스에서는 필수적으로 요구된다.

CI/CD 단계 한눈에 보기
Source Code -> Build -> Test -> Release -> Deploy

유명한 툴로는
Jenkins, Buildkite, Github Action (깃헙의 workflow 도구, 일부 무료), GitLab CI/CD , Bitbucket Pipelines, Circleci 등이 있다.

Github Actions

깃헙에서 만든 툴...

5가지를 이해하자
Event, Workflows, Jobs, Actions, Runners

Event -> 깃헙에서 발생할 수 있는 대부분의 이벤트 지정 가능

  • main 브랜치 머지
  • 커밋 푸쉬
  • 이슈 opne 등과 같은 이벤트

Workflows -> 특정한 이벤트가 발생하면 어떤 일을 자동화 하고싶은지 명시 할 수 있는 곳

Job -> 워크플로우안에는 실행할 Job을 명시. 여러가지 job을 명시 가능. 병렬적으로 수행도 가능하며 순차적으로도 가능.
각각의 Job 안에는 어떤 순서로 일이 실행되어야 하는지 스크립트 형태로 명시 할 수 있다.
또는.. 깃헙에서 제공하는 action을 가져다 사용 가능

action -> action은 잡에서 쉘 스크립트등을 짤때 사용할 수 있는 기능

Runner -> VM 머신이나 Docker 컨테이너로 보면 된다. 또한 각각의 Job은 Runner에서 실행이 된다

깃헙 액션을 사용하기 위해서는!!!
.github/workflows/{workflow.yml}

.github/workflows 안에 yml 파일을 만들어야 한다.

Jenkins

Java Runtime 위에서 동작하는 자동화 서버

빌드, 테스트, 배포 등 CI/CD 파이프라인 자동화 서버.

다양한 플러그인들을 활용해서 각종 자동화 작업을 처리할 수 있음.

정말 많은 플러그인들이 존재 - Credentials Pluugin, Gid Plugin, PipeLine, Docker Plugin and Docker Pipeline

Jenkins에 대해서는 따로 학습을 해서 사용해볼 예정

profile
공부 정리 블로그

1개의 댓글

comment-user-thumbnail
2023년 7월 20일

항상 좋은 글 감사합니다.

답글 달기