GitLab CI/CD는 GitLab에 내장된 완전한 CI/CD 파이프라인 도구다. 코드 저장소와 긴밀하게 통합되며, Auto DevOps, GitLab Runner, 컨테이너 레지스트리를 포함한다.
.gitlab-ci.yml 구조
yaml
stages:
- test
- build
- deploy
variables:
DOCKER_REGISTRY: registry.gitlab.com
IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
# 공통 설정
.node-base:
image: node:20-alpine
cache:
key: $CI_COMMIT_REF_SLUG
paths:
- node_modules/
test:unit:
extends: .node-base
stage: test
script:
- npm ci
- npm run test:coverage
coverage: '/Liness*:s*(d+.d+)%/'
artifacts:
reports:
coverage_report:
coverage_format: cobertura
path: coverage/cobertura-coverage.xml
build:docker:
stage: build
image: docker:24
services:
- docker:24-dind
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build -t $IMAGE_TAG .
- docker push $IMAGE_TAG
only:
- main
- tags
deploy:production:
stage: deploy
image: bitnami/kubectl:latest
script:
- kubectl set image deployment/my-app app=$IMAGE_TAG
- kubectl rollout status deployment/my-app
environment:
name: production
url: https://myapp.com
only:
- tags
when: manual
GitLab Runner 등록
bash
# Runner 설치
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
sudo apt install gitlab-runner
# Runner 등록
sudo gitlab-runner register \
--url https://gitlab.com \
--registration-token YOUR_TOKEN \
--executor docker \
--docker-image alpine:latest
관련 문서