GitLab CI/CD 를 알아보자

devcmkim·2023년 5월 27일
0
post-thumbnail

이 글에는 GitLab CI/CD에 대한 개념과 사용 방법을 설명합니다. GitLab CI/CD 워크플로우, 파이프라인, Job, Variables, Environments, Runners, Artifacts, Cache 등에 대한 설명이 포함되어 있습니다.

개념

CI = 지속적 통합 (Continuous Integration)

CD = 지속적 전달 (Continuous Delivery)

CD = 지속적 배포 (Continuous Deployment )

GitLab CICD 워크플로우

  • 애플리케이션을 빌드하고 테스트
  • 리뷰 앱에서 변경사항 미리 확인
  • 구현이 예상대로 작동시
    • 코드를 검토하고 승인
    • Feature 브랜치를 기본 브랜치에 병합 (프로덕션 환경에 자동으로 배포)

사용하는 용어 및 개념들

♠️ Pipelines

CI/CD 의 최상위 구성요소

  • Pipelines 구성요소
    • Job 수행할 작업을 정의
    • Stages 작업을 실행할 시기를 정의
  • 동작원리
    • Job 은 러너에 의해 실행됨, 동시러너가 충분한경우 동일한 단계의 여러 Job이 병렬로 실행됨
    • 한 단계의 모든 Job 이 성공하면, 파이프라인은 다음단계로 넘어감 / 한 단계의 어떤 Job이 실패하면, 다음단계는 실행되지 않고 파이프라인이 일찍 종료됨
    • 일반적으로 자동으로 실행됨 (수동으로도 가능)

♠️ Jobs

.gitlab-ci.yml파일의 가장 기본적인 요소, Job은 러너가 실행해야 하는 명령 모음이다. 결과물이 무엇인지 실시간으로 볼수있어 개발자가 해당 Job이 실패한 이유를 이해할 수 있다.

Job 정의조건

  • 어떤 조건에서 실행되어야 하는지 명시하는 제약조건으로 정의
  • 임의 의 이름을 가진 최상위 요소, 최소한 script 절을 포함해야함
  • 정의할수 있는 수에는 제한이 없음

♠️ Variables

CI/CD 변수들을 사용하여 다음을 수행할수 있다

  • Jobs 및 파이프라인의 동작을 제어
  • 재사용하려는 값 저장
  • .gitlab-ci.yml 파일에 값을 하드 코딩하는 것을 방지

➕ GitLab 에서 제공하는 사전 정의된 CI/CD 변수들을 불러와서 사용할수 있다.

ex )

📌사전 정의된 변수 사용

job1:
  stage: test
  script:
    - echo "$CI_JOB_STAGE"

📌.gitlab-ci.yml 에 정의된 변수 사용

variables:
  TEST_VAR: "All jobs can use this variable's value"

job1:
  variables:
    TEST_VAR_JOB: "Only job1 can use this variable's value"
  script:
    - echo "$TEST_VAR" and "$TEST_VAR_JOB"

♠️ Environments

  • 코드가 배포되는 위치를 설명
  • GitLab CI/CD 가 환경에 코드버전을 배포할때마다 배포가 생성됨
  • 프로젝트와 연결된 배포 서비스가 있을시 예)Kubernetes
    이를 사용 가능

♠️ Runners

**.gitlab-ci.yml 에 정의된 코드를 실행**

러너는 관리자가 생성하며 GitLab UI 에 표시된다.

러너 타입들

  • 공유 러너(Shared runners) - 모든 프로젝트에서 사용 가능
  • 그룹 러너(Group runners) - 그룹의 모든 프로젝트 및 하위 그룹을 위한 러너
  • 특정 러너(Specific runners) - 개별 프로젝트용, 한번에 하나의 프로젝트에 사용

♠️ Artifacts

  • 작업 단계(stages) 간에 전달되는 단계 결과에 사용
  • 동일한 파이프라인의 이후 단계인 Job 에서 아티팩트를 가져와 사용할수 있다

♠️ Cache

  • 프로젝트 의존성(Dependencies)을 저장하는데 사용
  • 후속 파이프라인에서 지정된 Job의 속도를 높일수 있다

사용하기

♦️ GitLab CI/CD 세팅

  1. Job을 실행할 수 있는 Runner 가 있는지 확인 → 없는경우 GitLab Runner를 설치하고 인스턴스, 프로젝트 또는 그룹에 대한 러너를 등록한다
  2. .gitlab-ci.yml 파일을 리포지토리의 루트에 생성한다

♦️.gitlab-ci.yml 생성

GitLab CI/CD 에 대한 특정 지침을 yaml 파일로 구성한 것이다

.gitlab-ci.yml 에서는 다음의 관한 내용을 정의한다

  • 러너가 실행해야 하는 작업(Job)의 구조와 순서를 정의
  • 특정 조건이 발생할 때 러너가 내려야 하는 결정

자, 이제 실제 사용하고있는 파일로 알아보자.

stages:
  - develop
  - production
develop:
    stage: develop // (개발서버)
    script:
        - node deploy.js develop
    only:
        - develop // develop 브런치로 적용
    tags:
        - common
    environment: develop
production: // (운영서버)
  stage: production
  script:
    - node deploy.js master
  only:
    - tags // master 브런치의 최종 푸시된 태그로 적용
  tags:
    - common
  environment: master

만약 feature 에서의 브런치를 QA를 위해 개발서버에 적용하고 싶을 경우,

only:
        - feature/test123

위 같이 적용하면 개발서버에서 test123이라는 브런치가 적용된다.

Ref. https://docs.gitlab.com/

profile
Frontend Developer

0개의 댓글