Contents
Ref
GitLab Official Docs(https://docs.gitlab.com/ee/ci/)를 바탕으로 작성하였습니다.
GitLab CI Pipeline, Artifacts and Environments(https://www.youtube.com/watch?v=PCKDICEe10s)
GitLab CI pipeline tutorial for beginners(https://www.youtube.com/watch?v=Jav4vbUrqII)
공부하며 작성 중이기에, 부족한 부분이 보이시면 가르침 부탁드리겠습니다.
GitLab CI/CD concept
GitLab CI/CD는 다양한 컨셉들을 사용하는데, 해당 컨셉들에 대해 먼저 알아보자.
Pipelines
Pipeline은 CI/CD의 최상위 구성요쇼로, Job과 Stage로 구성된다.
- Job : 할 일을 정의한 것(which define what to do)
- Stage : job을 실행할 시기를 정의한 것(which define when to run the jobs)
보통 pipeline은 4개의 stage(build, test, staging, production)를 가진다.
build stage - compile job 수행
test stage - test job 수행
staging stage - deploy-to-stage job 수행
production stage - deploy-to-production 수행
아래 그림은 기본적인 GitLab Pipeline을 보여준다.
Pipeline 과 관련하여 schedule, trigger, parent-child 등 여러 정보들이 있지만, 현재는 기본 CI 구성을 우선으로 진행하고자한다.
Variables
CI/CD Variables 는 환경 변수의 한 종류이다.
Pipeline과 job 제어, 재사용을 위한 저장 용도, 추후 작성하게 될 .yml 파일에서 하드 코딩을 피하기 위한 용도로 사용된다.
Predefined GitLab CI/CD variables
리눅스의 PWD와 같이 미리 정의된 환경변수들이 있고, 링크(https://docs.gitlab.com/ee/ci/variables/predefined_variables.html)에서 확인 가능하다.
Custom CI/CD variables
사용자가 입맛에 맞게 다양한 영역에서 설정이 가능하다. 특정 파일 한정, 프로젝트 한정, 그룹한정 etc..
각각의 설정 방법에 대해서는 실제 구성하는 과정에서 설명하도록 한다.
Environments
코드가 deploy 되는 곳을 Environments라 한다.
+) gitlab sidebar의 [Deployments]-[Environments] 에서 확인 가능하다.
staging과 production 같은 Static Environments와 dynamic name을 가지는 Dynamic Environments 2가지로 나뉜다.
Job artifacts
Job은 file과 directory를 출력할 수 있는데, 이것들을 Job artifact라 칭한다.
중요한 것은 artifact 설정 시에, job 끼리 파일을 공유할 수 있다는 것.
본래 job들은 서로 독립적이다. 하지만, job A의 output을 가지고 job B를 수행해야할 경우가 있을 것이다.
이러한 경우 우리는 artifact 설정을 통해 이를 해결할 수 있다.
그리고, 해당 artifact의 유지기간(expire_in) 을 정하여 줄 수 있다.
Cache dependencies
Cache 는 1개의 job이 다운로드하거나 저장하는 하나 이상의 파일들을 의미한다.
그렇다면, Cache와 artifact는 어떻게 다른가?
cache는 인터넷에서 다운로드되는 dependencies를 위해 사용한다. 그리고 GitLab Runner가 설치되는 곳에 저장된다.
artifact는 stage 간의 결과물을 넘겨주기 위해 사용한다. job에 의해 생성되고, GitLab 내부에 설치되며, 다운로드가 가능하다.
Dependencies 중복 설치 과정을 제거하여, 더 빠른 실행 시간을 기대할 수 있다.
GitLab Runner
GitLab Runner는 1개 pipeline 내의 job들을 구동시키는 application이다.
application이기 때문에 설치가 필요한데, Windows, Ubuntu 등 여러 OS를 지원하며, Docker 또한 지원한다.
본인은 앞으로 진행하는 GitLab CI를 구성하는 과정에서, 추후 re-use를 위해 Docker를 이용해 전과정을 진행할 계획이다.
Runner Execution Flow
'Env > DevOps' 카테고리의 다른 글
.gitlab-ci.yml 파일 작성법 (0) | 2022.02.28 |
---|---|
GitLab CI 구성 - 간단 예제(with Docker) (0) | 2022.02.23 |
댓글