본문 바로가기

QA 업무

[CI/CD][git&github] GitLab이란?

GitLab CI/CD란?

GitLab에서 제공하는 CI/CD(Continuous Integration and Continuous Deployment/Delivery) 도구입니다. 이를 통해 코드를 자동으로 빌드, 테스트, 배포할 수 있으며, DevOps 파이프라인을 구축할 수 있게 도와줍니다.

출처 : https://docs.gitlab.com/ee/ci/

GitLab CI/CD의 주요 개념

CI/CD:Continuous Integration (CI): 개발자들이 코드를 주기적으로 GitLab에 푸시(push)하면, GitLab CI가 자동으로 코드를 빌드하고 테스트합니다. 이 과정에서 코드 품질 문제를 사전에 발견하고 해결할 수 있습니다.

Continuous Deployment/Delivery (CD): 빌드 및 테스트를 통과한 코드가 자동으로 배포(deployment)되거나, 수동 승인 후 배포가 이루어질 수 있습니다.

 

.gitlab-ci.yml 파일:

GitLab CI/CD 파이프라인의 설정은 프로젝트 루트 디렉토리에 위치한 .gitlab-ci.yml 파일에 정의됩니다.

이 파일에서는 단계(Stages), 작업(Jobs), 스크립트(Scripts) 등을 정의하여 파이프라인이 어떻게 실행될지를 지정합니다.

 

Runner:

GitLab Runner는 .gitlab-ci.yml에 정의된 작업을 실제로 수행하는 에이전트입니다.

GitLab에서는 기본 제공되는 Shared Runner가 있고, 필요에 따라 자체 호스팅 Runner도 설정할 수 있습니다.

 

GitLab CI/CD의 구조

.gitlab-ci.yml 파일에서 파이프라인을 설정할 때, 일반적으로 다음과 같은 구조를 따릅니다:

 

stages:
  - build
  - test
  - deploy

variables:
  NODE_ENV: production

build_job:
  stage: build
  script:
    - echo "Building the project..."
    - npm install
    - npm run build

test_job:
  stage: test
  script:
    - echo "Running tests..."
    - npm test

deploy_job:
  stage: deploy
  script:
    - echo "Deploying the project..."
    - npm run deploy
  only:
    - main

 

 

주요 구성 요소

stages: 파이프라인의 각 단계를 정의합니다. 위 예시에서는 build, test, deploy 세 가지 단계가 있습니다.

variables: 파이프라인 전반에서 사용할 환경 변수를 정의할 수 있습니다.

jobs: 각 단계별로 실행할 작업을 정의합니다.

build_job: 빌드 작업으로, npm install과 npm run build 명령어를 실행합니다.

test_job: 테스트 작업으로, npm test 명령어를 실행합니다.

deploy_job: 배포 작업으로, main 브랜치에서만 실행되도록 설정되어 있습니다.

 

GitLab CI/CD 파이프라인의 실행 과정

코드 푸시:

개발자가 GitLab에 코드를 푸시하면 .gitlab-ci.yml 파일이 있는 경우 자동으로 파이프라인이 실행됩니다.

 

Runner가 작업 수행:

GitLab Runner는 .gitlab-ci.yml에 정의된 작업을 순서대로 실행합니다.

각 Job의 실행 결과는 GitLab 웹 UI에서 확인할 수 있습니다.

 

결과 확인 및 배포:

모든 Job이 성공하면 파이프라인이 완료됩니다. 실패한 Job이 있으면, 파이프라인은 중단되고 실패한 원인을 디버깅할 수 있습니다.

 

GitLab CI/CD의 장점

자동화: 빌드, 테스트, 배포 작업을 자동화하여 수동 작업을 줄이고, 오류 가능성을 낮출 수 있습니다.

연속적 통합: 코드 품질을 주기적으로 검증하고, 배포 전 안정성을 확보할 수 있습니다.

효율적인 협업: 팀원들이 동일한 파이프라인 환경에서 작업할 수 있어 협업이 용이합니다.

강력한 커스터마이징: .gitlab-ci.yml을 통해 다양한 스크립트와 설정을 적용할 수 있어 유연한 파이프라인 구축이 가능합니다.

 

GitLab CI/CD의 사용 예시

예를 들어, Node.js 프로젝트에서 GitLab CI/CD를 사용하여 E2E 테스트를 자동화하고 싶다면, 다음과 같은 설정이 가능합니다:

stages:
  - e2e_test

e2e_test_job:
  stage: e2e_test
  image: cypress/base:latest
  script:
    - npm install
    - npx cypress run
 
 

위 예시에서는 Cypress 도구를 사용하여 E2E 테스트를 실행하는 작업을 정의했습니다.

 

결론

GitLab CI/CD는 개발팀이 코드 변경 사항을 신속하고 안정적으로 검증하고 배포할 수 있게 도와주는 강력한 도구입니다.

이를 통해 DevOps 문화를 도입하고, 개발과 배포의 효율성을 극대화할 수 있습니다.

 

Gitlab 관련 영상 (한국어 자막 켜고 볼 것!)

https://www.youtube-nocookie.com/embed/eyr5YnkWq_I

 

YouTube

 

www.youtube-nocookie.com