도커로 CI/CD

지니🧸·2024년 5월 1일
0

CS 저장소

목록 보기
43/48
post-custom-banner

CI/CD란?

CI/CD (Continuous Integration/Continuous Deployment): 소프트웨어 개발 과정에서의 효율성과 신속성을 극대화하는 자동화된 프레임워크 제공

  • 지속적 통합, 지속적 전달, 지속적 배포: continuous integration, continuous delivery, continuous deployment

CI: Continuous Integration

  • 개발자들이 작업한 코드를 주기적으로 공유 레포에 병합 => 코드 통합 자동화
  • 모든 변경사항은 자동 빌드 및 테스트를 거쳐 메인 브렌치에 통합
  • 코드 충돌 최소화 & 소프트웨어 품질 유지 & 배포 준비 상태 유지

CD: Continuous Delivery

  • CI 과정에서 한 단계 더 나아가는 것
  • 코드 변경사항이자동으로 빌드 및 테스트를 거쳐 실제 운영 환경에 배포될 준비 완료
  • 배포 과정을 완전히 자동화는 하지 않음. 단, 실제 배포는 수동으로 트리거할 수 있는 옵션
  • 개발팀은 언제든지 안정적인 버전의 소프트웨어를 신속하게 배포할 준비가 되어있음

CD: Continuous Deployment

  • 모든 코드 변경사항이 자동 테스트를 통과하면 즉시 프로덕션 환경에 배포된다
  • 개발팀이 소프트웨어를 빠르게 혁신하고, 사용자에게 지속적으로 가치를 전달할 수 있도록
  • 지속적 배포를 통해 소프트웨어의 릴리스 과정 자동화 => 인간의 개입 없이도 신속하게 배포
  • CI/CD 파이프라인 도입은 개발 프로세스의 자동화와 코드 통합, 테스트, 배포 과정의 효율성을 극대화
    • 코드 품질 개선, 개발 주기 단축, 사용자 만족도 증대

CI/CD 파이프라인 도구

여러 CI/CD 파이프라인 도구들은 각각 고유의 특성과 장단점을 가진다

  1. Jenkins

    • 장점: 매우 유연. 수많은 플러그인으로 확장 가능
    • 단점: 초기 설정 복잡
  2. Github Actions

    • 장점: Github과의 긴밀한 통합
    • 단점: 다른 도구들에 비해 상대적으로 새로움
  3. GitLab CI/CD

    • 장점: 소스 코드 관리와 CI/CD가 하나의 플랫폼에 통합
    • 단점: 대규모 프로젝트에서는 자원 관리가 필요할 수도
  4. CircleCI

    • 장점: 빠른 실행 속도와 좋은 확장성
    • 단점: 무료 플랜의 제한적인 리소스

Github Action

Github Action의 동작 원리

Github Actions는 Github 레포의 이벤트 (푸쉬, 풀 리퀘스트 등)에 반응하여 자동화된 워크플로우를 실행한다

Workflow (작업)은 Github Actions에서 실행되는 자동화 프로세스를 정의하는 단위다

  • 각 작업은 독립적으로 실행되며, 여러 개의 단계로 구성 가능

Action: Github Marketplace에서 가져온, 또는 직접 작성한 재사용 가능한 코드 조각

  • 다양한 용도로 사용 가능
  • CI/CD, 테스트, 배포 등과 같은 다양한 작업 자동화

Secrets: 레포의 중요한 데이터를 안전하게 저장하고 관리

  • API 토큰, 암호, SSH 키 등
  • 암호화되어 저장. 워크플로우 실행 중에 필요할 때만 복호화
  • 워크플로우는 .github/workflows 디렉토리 내 YAML 파일로 정의
    • 작업 (jobs), 단계 (steps), 액션 (actions) 등 설정 가능
    • 워크플로우는 이벤트 발생 시 지정된 환경 (Ubuntu, Windows 등)에서 컨테이너 또는 가상 머신 위에서 실행
    • 작업은 서로 독립적으로 또는 병렬로 실행 가능
    • 각 단계는 소프트웨어 빌드, 테스트, 배포 등의 작업 수행이 가능

출처:
원티드 2024 4월 백엔드 자료

profile
우당탕탕
post-custom-banner

0개의 댓글