[TIL] CI/CD (1)

오진선·2024년 4월 2일
0

TIL

목록 보기
26/29

Today I Learned

CI/CD란?

1. CI(Continuous integration)

  • 자동화된 빌드 및 테스트가 수행된 후, 개발자가 코드 변경 사항을 중앙 리포지토리에 정기적으로 병합하는 DevOps 소프트웨어 개발 방식
  • 소스/버전 관리 시스템에 대한 변경 사항을 정기적으로 커밋하여 모든 사람에게 동일 작업 기반을 제공하기 위함
  • 지속적 통합은 그 자체로 유익하지만 CI/CD 파이프라인을 구현하기 위한 첫 번째 단계

2. CD (Continuous Deployment, Continuous Delivery)

지속적 배포

  • 개발자의 변경 사항을 리포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리스하는 것
  • 개발자를 위한 자동화 프로세스
  • 수동 개입 없이 해당 변경 사항이 프로덕션에 자동으로 배포
  • 간단한 코드 변경이 정기적으로 마스터에 커밋되고, 자동화된 빌드 및 테스트 프로세스를 거치며 다양한 사전 프로덕션 환경으로 승격되며, 문제가 발견되지 않으면 최종적으로 배포

CI/CD 도구

1. GitHub Actions

  • GitHub Actions는 GitHub 저장소에 내장된 자동화 도구
  • 이슈 응답, 풀 리퀘스트 처리, 라벨 관리 등 다양한 GitHub 이벤트에 반응하여 자동화된 작업을 실행
  • .github/workflows 디렉토리에 YAML 파일 형식으로 워크플로우를 정의하여, 특정 이벤트가 발생했을 때 필요한 작업들을 실행
  • GitHub 저장소를 사용하는 개발자에게 매우 편리

2. Jenkins

  • 오픈 소스 자동화 서버
  • 1,000개 이상의 플러그인을 지원하여 거의 모든 종류의 CI/CD 시나리오를 처리 가능
  • Groovy 기반의 Jenkinsfile을 작성하여 프로젝트의 빌드, 테스트, 배포 등의 과정을 자동화
  • 구성이 다소 복잡할 수 있지만, 그만큼 강력한 커스터마이징이 가능

3. Team City

  • JetBrains에서 개발한 상용 CI/CD 서버
  • 도구는 소프트웨어 개발 팀이 더 빠르고 효율적으로 작업을 수행할 수 있도록 설계
  • 사용자 친화적인 인터페이스와 강력한 기능이 특징으로, 구성이 쉽고 관리가 용이
  • TeamCity는 사전 구성된 기능들이 풍부하여 설정 시간을 최소화하며, 빌드 구성, 테스트 결과 분석, VCS 통합 등 다양한 기능을 제공
  • 더 많은 기능과 사용자 지원을 위해서는 유료 라이선스 구매 필요

4. GitLab

  • GitLab은 전체 DevOps 수명 주기를 관리할 수 있는 플랫폼
  • 소스 코드 관리(SCM)와 CI/CD를 한 플랫폼에서 제공하여 개발 프로세스를 간소화하고 팀 간의 협업을 촉진
  • 저장소에 직접 통합되어 있어 별도의 서비스를 구축할 필요 없이 강력한 자동화 기능을 제공
  • YAML 파일을 사용하여 파이프라인을 정의하고, 테스트, 빌드, 배포 등 다양한 단계를 자동으로 처리
  • 오픈 소스와 상업용 버전을 모두 제공
profile
₍ ᐢ. ̫ .ᐢ ₎

0개의 댓글