인프라/CI, CD

2024 12 5 TIL - CI/CD

Griotold 2024. 12. 5. 11:43

1. CI/CD란?

소프트웨어 개발 프로세스를 자동화하고 효율화하는 방법론.

 

1 - 1. CI(Continuous Integration, 지속적 통합)

CI는 코드 변경사항을 주기적으로 통합하는 프로세스를 말한다.

 

1 - 1 - 1. 주요 특징

  • 코드 변경사항을 자주 병합하여 충돌을 예방하고 오류를 조기에 발견한다.
  • 자동화된 빌드와 테스트 과정을 거친다.
  • 버그를 빠르게 발견하고 코드 품질을 향상 시킨다.

 

1 - 2. CD(Continuous Delivery/Deployment, 지속적 제공/배포)

CD는 CI 이후의 단계로, 두 가지 의미로 사용된다.

 

1 - 2 - 1. Continous Delivery (지속적 제공)

배포 준비가 완료된 코드를 수동으로 프로덕션 환경에 배포한다.

 

1 - 2 - 2. Continuous Deployment (지속적 배포)

배포 준비가 완료된 코드를 자동으로 프로덕션 환경에 배포한다.

 

CD의 목표는 다운타임을 최소화하면서 사용자에게 최신 버전의 소프트웨어를 제공하는 것이다.

 

2. CI/CD의 이점

  • 개발 생산성 향상
  • 버그와 오류를 빠르게 발견 및 수정
  • 소프트웨어 제공 속도 향상
  • 코드 품질 개선
  • 팀 간 협업 촉진

 

3. CI/CD 도구

 

3 - 1. GitHub Actions

GitHub 저장소에 직접 통합되어 있는 CI/CD 도구.

 

3 - 1 - 1. 특징

  • GitHub 저장소와의 강력한 통합
  • 다양한 이벤트 기반 트리거
  • 풍부한 커뮤니티
  • 무료 사용 가능

 

3 - 2. Jenkins

Jenkins는 오픈 소스 CI/CD 도구.

 

3 - 2 - 1. 특징

  • 높은 커스터마이징 가능
  • 다양한 플러그인 지원
  • 분산 빌드 및 다중 플랫폼 지원
  • 대규포 프로젝트에 적합

 

3 - 3. GitLab CI

  • GitLab CI는 GitLab과 통합된 CI/CD 도구로, GitLab 저장소를 기반으로 CI/CD 파이프라인을 구성할 수 있다.

 

3 - 3 - 1. 특징

  • GitLab과의 통합
  • 강력한 파이프라인 편집기 제공
  • 자동화된 DevOps 수명 주기 관리
  • 클라우드 및 온프레미스 모두 지원

 

References

https://docs.github.com/ko/actions

https://www.jenkins.io/

https://docs.gitlab.com/ee/ci/

https://velog.io/@ksj051203/CICD

https://quannhm.medium.com/how-i-build-a-gitlab-ci-pipeline-as-a-shared-common-library-pipeline-3c56f7847598

https://ccomccomhan.tistory.com/297#google_vignette

https://velog.io/@juheesvt/Jenkins-Who-Are-You

https://velog.io/@junho5336/github-actions-deploy-pipeline