CI 에대해서

roberto·2022년 12월 24일
0

들어가며...

당신이 협업 및 회사 입사시 여러 용어와의 충돌을 맞보게된다.
혼자 개발할때는 이러한 설정을 구축할 필요성이 없지만 여러사람이 공동 개발을하고
개발한 결과물의 결과가 사용자에게 긴밀한 영향을 미치게 된다면 이러한 여러 용어의 개념들이
필요하다.
그중에 처음 맞닫들이게될 CI 에 대해 이야기해보자

CI

지속적 통합

통합? 여기서의 통합이란 예를들어보자

회사에서 게시판을 3명의 개발자가 만들기로 했다

각자가 개발을 하고 깃으로 코드를 올리면

코드가 통합 된다

통합된 코드를 합쳐서 하나의 버전을 만든다 (게시판v1.0.0)

그런뒤 이 합친 버전을 바로 우리의 서버에 올리는게 아니라

테스트 , 검증 과정을 진행하고 빌드를 한뒤 배포하게된다

통합이란 위와같은 맥락의 통합니다

CD : 지속적 배포

위글에서 보듯 우리가 어려운것 협업이나 회사입사시 어려운 개념으로 느껴지는것은

테스트 , 검증 , 빌드 의 일련의 과정들이다

혼자개발하면 필요성이 많이 없으니까...

위와같은 과정들을 어떻게 진행할까 그환경을 만드는 시뮬레이션을 같이 알아보자

그림에 서버가 2개가 보인다 검은색 네모의 서버는 위과정을 거치고 올릴 서버이고

위과정을 위한 또다른 서버를 하나더 생성한게 초록색 네모의 서버이다

초록색 서버 에선 우리의 코드(git 에있는 최종 배포할 특정 repo)를 감지한다

이 서버에선 우리의 코드를 가지고 테스트(jest...) 를 진행하고 빌드를 진행한다

이제 위와같이 과정(테스트,빌드)을 거친 코드를 서버로 push 한다

그럼 이서버 어떻게 만들어요 ?

서버를 만드는건 여러가지 방법이 있겠지만

위와같이 github 을 사용한다는 가정이라면 git 에서 제공하는 웹훅(서버) github Action 을 사용한다

코드변화 감지

위그림에서 초록 서버 가 github repo를 감지한다고 했는데 어떻게 할까 ?

폴링같이 지속적으로 git repo를 감지 할수도 있지만

웹훅을 이용해서 git repo 의 변화를 감지한다

github Action은 아래와 같은 구조를 띄고 있다

github Action

git Action 은 CI 툴이다 흔히들 젠키스 와같은 서비스 를 알고있지만

github 에서 내부적으로 CI 툴을 제공한것이다

그림 출처 : https://www.youtube.com/watch?v=Np64aq4AlLg

요약 :

출처 : https://www.daleseo.com/github-actions-basics/

- workFLows :

모든 GitHub 리포지토리는 하나 이상의 워크플로 를 포함할 수 있습니다.
.github/workflows각 워크플로는 리포지토리 디렉터리의 별도 YAML에 정의됩니다 .
여러 워크플로가 동시에 병렬로 실행될 수 있습니다.

workFlows - Event :

워크플로는 하나 이상의 이벤트 에 의해 트리거됩니다.
이벤트는 내부 GitHub 이벤트(예: 푸시, 릴리스 또는 풀 요청), 예약된 이벤트( 특정 시간에 트리거됨) 또는 임의의 외부 이벤트(웹후크 호출에 의해 트리거됨)일 수 있습니다.

- Jobs :

workFlows는 하나 이상의 작업 으로 구성됩니다.
작업에는 workFlows가 트리거될 때 실행될 일련의 명령이 포함되어 있습니다(아래 단계 참조).
기본적으로 workFlows가 트리거되면 모든 작업이 병렬로 실행됩니다.
그러나 선택한 작업 간의 종속성을 정의하여 순차적으로 실행되도록 할 수 있습니다.

- Steps :

Jobs는 일련의 Steps 로 구성됩니다 . Steps는 셸 명령 또는 작업입니다(아래 작업 참조).
Steps의 모든 단계는 Steps와 연결된 실행기에서 순차적으로 실행됩니다.
기본적으로 단계가 실패하면 작업의 후속 단계를 건너뜁니다.

요약

출처: https://www.youtube.com/watch?v=Np64aq4AlLg

실행

on: [push] : push 가일어나면 아래 jobs 수행해라

참고

profile
medium 으로 이전했습니다

0개의 댓글