소프트웨어 빌드란?

  • 자신(혹은 팀)이 개발한 소프트웨어를 최종적으로 출시하기 위한 형태로 만드는 것
    • 테스트가 빌드의 중요한 일부로 포함
  • 참여 개발자들이 많을수록 이는 더 중요
  • 개발이 끝나기 전부터 빌드를 하면 소프트웨어의 안정성 증대
    • Continuous Integration

개발자가 코드를 고칠 때마다 테스트를 돌림으로써 우리가 기대하는대로 코드가 동작하고있음을 보장하고자함.

Continuous Integration이란?

Software Engineering Practice의 하나

기본 원칙

  • 코드 Repo는 하나만 유지 (Master)
  • 코드변경을 최대한 자주 반영, 한번에 모두다 끝내려하지말고, 자주 sync, 자주 조금씩
  • 테스트를 최대한 추가
    • Test Coverage(최소 75%~80%)
  • 빌드를 계속적으로 수행 (자동화)
    • Commit Build vs Nightly Build
  • 성공한 빌드의 프로덕션 릴리스 (자동화)
    • CD: Continuous Delivery

CI(자동테스트) -> CD(자동배포)

빌드 실패

  • 새 코드의 커밋으로 인해 테스트가 실패하는 경우
  • 많은 회사들이 빌드 실패시 빌드가 다시 성공할 때 까지 코드 변경을 금지
    • 즉 빌드 실패는 모든 사람들을 잡아두는 족쇄
    • 그래서 어느 정도 조직이 커지면 빌드만 전담하는 엔지니어가 생김
      • 이 사람의 업무 중의 하나는 빌드 실패시 누가 주범인지 알아내는 것
    • 빌드 실패시 가벼운 형태로 페널티 부여

CI/CD란

Code Commit -> CI(테스트 수행) -> CD(소프트웨어 배포) -> production

profile
keep growing

0개의 댓글