GitLab CI/CD란?
GitLab에서 제공하는 CI/CD(Continuous Integration and Continuous Deployment/Delivery) 도구입니다. 이를 통해 코드를 자동으로 빌드, 테스트, 배포할 수 있으며, DevOps 파이프라인을 구축할 수 있게 도와줍니다.
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
'QA 업무' 카테고리의 다른 글
[CI/CD] [git&github] 2.3 버전이 쌓여 사용자에게 선보여지기까지 (0) | 2024.11.12 |
---|---|
[CI/CD] [git&github] 1.1 깃 없는 세상 (2) | 2024.11.12 |
E2E 테스트 자동화 (1) | 2024.11.12 |
[취업을 위한 백엔드 개발] 22강 HTTP 트랜잭션이란? (1) | 2024.11.11 |
API Test (0) | 2024.11.11 |