당신이 협업 및 회사 입사시 여러 용어와의 충돌을 맞보게된다.
혼자 개발할때는 이러한 설정을 구축할 필요성이 없지만 여러사람이 공동 개발을하고
개발한 결과물의 결과가 사용자에게 긴밀한 영향을 미치게 된다면 이러한 여러 용어의 개념들이
필요하다.
그중에 처음 맞닫들이게될 CI 에 대해 이야기해보자
지속적 통합
통합? 여기서의 통합이란 예를들어보자
회사에서 게시판을 3명의 개발자가 만들기로 했다
각자가 개발을 하고 깃으로 코드를 올리면
코드가 통합 된다
통합된 코드를 합쳐서 하나의 버전을 만든다 (게시판v1.0.0)
그런뒤 이 합친 버전을 바로 우리의 서버에 올리는게 아니라
테스트 , 검증 과정을 진행하고 빌드를 한뒤 배포하게된다
통합이란 위와같은 맥락의 통합니다
CD : 지속적 배포
위글에서 보듯 우리가 어려운것 협업이나 회사입사시 어려운 개념으로 느껴지는것은
테스트 , 검증 , 빌드 의 일련의 과정들이다
혼자개발하면 필요성이 많이 없으니까...
위와같은 과정들을 어떻게 진행할까 그환경을 만드는 시뮬레이션을 같이 알아보자
그림에 서버가 2개가 보인다 검은색 네모의 서버는 위과정을 거치고 올릴 서버이고
위과정을 위한 또다른 서버를 하나더 생성한게 초록색 네모의 서버이다
초록색 서버 에선 우리의 코드(git 에있는 최종 배포할 특정 repo)를 감지한다
이 서버에선 우리의 코드를 가지고 테스트(jest...) 를 진행하고 빌드를 진행한다
이제 위와같이 과정(테스트,빌드)을 거친 코드를 서버로 push 한다
그럼 이서버 어떻게 만들어요 ?
서버를 만드는건 여러가지 방법이 있겠지만
위와같이 github 을 사용한다는 가정이라면 git 에서 제공하는 웹훅(서버) github Action 을 사용한다
코드변화 감지
위그림에서 초록 서버 가 github repo를 감지한다고 했는데 어떻게 할까 ?
폴링같이 지속적으로 git repo를 감지 할수도 있지만
웹훅을 이용해서 git repo 의 변화를 감지한다
github Action은 아래와 같은 구조를 띄고 있다
git Action 은 CI 툴이다 흔히들 젠키스 와같은 서비스 를 알고있지만
github 에서 내부적으로 CI 툴을 제공한것이다
그림 출처 : https://www.youtube.com/watch?v=Np64aq4AlLg
요약 :
출처: https://www.youtube.com/watch?v=Np64aq4AlLg
참고