[CI/CD] 1탄 개념에 대해서

minjeongs·2024년 5월 29일
0

트러블슈팅

목록 보기
3/6
post-thumbnail

🙌 Notion에서 공부한 기록 옮기기

CI/CD

  • 소프트웨어 개발과 배포 과정을 자동화하여 개발자들이 효율적으로 소프트웨어를 개발하고 배포하는 방법을 지칭하는 용어
  • 여러 명의 개발자가 코드 작업을 할 때 서로 충돌할 수 있는 문제 해결

1. CI (Continuos Integration)

= 빌드 및 테스트 자동화

  • 지속적인 통합
  • 버전 관리 시스템(Git)에 코드를 푸시할 때 자동화된 빌드, 테스트 및 통합 프로세스를 실행하여 코드를 레포지토리에 지속적으로 통합
    • 추가/변경된 코드를 자동으로 빌드한 후 테스트
    • 테스트에 통과한 경우에만 공유 레포지토리에 병합
  • 구현
    • CI 환경 설정(Java, MySQL 등) 및 테스트 workflow를 작성
  • 순서(원리)
    • GitHub에 PR
    • 빌드 테스트 진행 (올바르게 동작하는지)
    • 문제가 있으면 개발자가 수정하고 다시 PR
    • 문제 없으면 (필요 시 코드 리뷰 진행 후) Merge 후 배포 요청
  • 예시
    • 원래 작업 흐름: 수비가 작업한 파일을 PR 했을 때, 민정이 직접 빌드 및 테스트를 진행하며 확인해야 함 + 수비 로컬에선 오류가 없었는데 민정 로컬에선 제대로 안 돌아갈 수도 있음
    • CI 도입 시: 민정이 수작업으로 직접 빌드 및 테스트를 할 필요가 없음
    • 즉, 빌드 및 테스트 과정을 Github Actions한테 시키는 것임!!
  • 장점
    • 코드 검증에 필요한 시간 감소
    • 개발 편의성 향상
    • 항상 테스트 코드를 통과한 코드만ㅎ이ㅂ 레포지토리에 올라가기 때문에, 좋은 코드 퀄리티를 유지할 수 있음

2. CD (Continuos Deployment)

= 배포 자동화

  • 지속적인 배포
  • (배포 파이프라인을 구축하여) CI 과정을 통해 빌드와 테스트를 통과한 코드를 자동으로 실제 환경에 배포
  • 순서(원리)
    • Merge 됐을 때 실행
    • 배포 진행
  • 예시
    • 상황: 코드가 수정됨 ⇒ PR 후 Merge 함 ⇒ 바뀐 부분을 웹 사이트에 적용하기 위해 또 배포해야 함
    • 원래 작업 흐름: 개발자가 직접 jar 파일을 생성하고 서버에 놓는 배포 과정을 직접 해야 함
    • CD 도입 시: 수작업으로 배포할 필요가 없음
    • 즉, 배포하는 과정을 Github Actions한테 시키는 것임!!
  • 장점
    • 개발자가 배포보다는 개발에 더욱 신경을 쓸 수 있음
    • 개발자가 수작업 없이 빌드, 테스트, 배포까지 자동화할 수 있음

3. 구현 방법

  • Jenkins
  • Github Actions

Github Actions로 CI/CD 파이프라인 구축하기에서 이어서 ~

참고 자료

CI/CD

Spring + Docker + GitHub Actions를 통한 CI/CD 파이프라인 구축

Github Actions CI-CD구축(NCP, Docker, SpringBoot)

Docker + Github Actions로 SpringBoot CI/CD 구축하기

profile
나 민정쓰 코딩하는디

0개의 댓글

관련 채용 정보