현대 DevOps 환경에서는 Code 변경부터 Build, Test, Deployment까지 자동화된 Pipeline 구성이 필수입니다.
기업에서는 다양한 CI/CD Platform을 사용하며 대표적으로 다음 도구들이 활용됩니다.
- Jenkins
- GitHub Actions
- GitLab CI
GitLab CI는 GitLab Repository와 직접 연결되어 Pipeline을 자동 실행하는 DevOps Automation Platform입니다.
예:
Developer Code 작성
↓
GitLab Repository Push
↓
GitLab CI Pipeline 실행
↓
Build
↓
Test
↓
Container Image 생성
↓
Production Deploy
GitLab CI는 Git 기반 Software Delivery 과정을 자동화하는 핵심 DevOps 기술입니다.
| 구성 요소 | 역할 |
|---|---|
| GitLab Repository | Source Code 관리 |
| GitLab Runner | 작업 실행 환경 |
| Pipeline | Automation Workflow |
| Job | 실행 작업 |
| Stage | Pipeline 단계 |
GitLab CI 구조를 이해하면 Enterprise CI/CD Pipeline Architecture를 설계할 수 있습니다.
GitLab CI란?
GitLab CI는 GitLab Platform에 포함된 Continuous Integration / Continuous Deployment 기능입니다.
주요 기능:
- Code Build 자동화
- Test 자동화
- Deployment 자동화
- Container Build
- Kubernetes 연동
GitLab DevOps Lifecycle의 핵심 기능입니다.
GitLab CI Architecture
기본 구조:
Developer
↓
GitLab Repository
↓
.gitlab-ci.yml
↓
GitLab Pipeline
↓
Runner
↓
Job 실행
↓
Deployment
Pipeline 설정을 Code로 관리합니다.
GitLab CI Pipeline이란?
Pipeline은 Code 변경 이후 자동으로 실행되는 전체 작업 흐름입니다.
예:
Source
↓
Build
↓
Test
↓
Deploy
Software Delivery 과정을 자동화합니다.
.gitlab-ci.yml 파일
GitLab CI는 YAML 파일을 이용하여 Pipeline을 정의합니다.
저장 위치:
.gitlab-ci.yml
예:
stages:
- build
- test
- deploy
build_job:
stage: build
script:
- echo "Build Application"
Pipeline 설정을 Version Control로 관리합니다.
GitLab CI Stage와 Job
구조:
Pipeline
↓
Stage
↓
Job
↓
Script 실행
Stage는 큰 작업 단계이며 Job은 실제 실행 단위입니다.
예:
| Stage | Job |
|---|---|
| Build | Compile |
| Test | Unit Test |
| Deploy | Release |
GitLab Runner란?
GitLab Runner는 Pipeline Job을 실제 실행하는 환경입니다.
종류:
| 유형 | 설명 |
|---|---|
| Shared Runner | GitLab 제공 |
| Specific Runner | 사용자 관리 |
| Docker Runner | Container 실행 |
Enterprise 환경에서는 Self-managed Runner를 많이 사용합니다.
GitLab CI와 Docker
Container Pipeline:
Git Push
↓
GitLab CI
↓
Docker Build
↓
Docker Image
↓
Container Registry
Container 기반 Application 배포를 자동화합니다.
GitLab CI와 Kubernetes
Kubernetes 배포 구조:
Developer
↓
GitLab CI
↓
Docker Image Build
↓
Registry Push
↓
Kubernetes Deploy
↓
Pod Running
Cloud Native Application 운영에 활용됩니다.
GitLab CI와 Container Registry
GitLab은 자체 Container Registry를 제공합니다.
구조:
Docker Image
↓
GitLab Container Registry
↓
Kubernetes Pull
↓
Application 실행
Image 관리와 배포를 통합할 수 있습니다.
GitLab CI와 DevSecOps
Security Pipeline:
Code
↓
GitLab CI
↓
SAST Scan
↓
Dependency Check
↓
Container Scan
↓
Deploy
개발 과정에 Security를 포함합니다.
GitLab CI와 GitOps
GitOps 환경:
GitLab Repository
↓
Desired State
↓
Argo CD
↓
Kubernetes Cluster
Git을 운영 상태 관리 기준으로 활용합니다.
GitLab CI Best Practice
권장:
- Pipeline 단계 분리
- Runner 관리
- Secret 보호
- YAML Template 활용
- Artifact 관리
안정적인 CI/CD 환경을 구축합니다.
GitLab CI 장애 분석
Pipeline 확인:
gitlab-runner status
Runner 확인:
gitlab-runner verify
Repository 상태:
git status
확인:
- Runner 연결
- YAML 오류
- Permission 문제
- Build 실패
GitLab CI 장점
| 장점 | 설명 |
|---|---|
| 통합 환경 | GitLab과 연결 |
| Automation | CI/CD 지원 |
| Container | Registry 제공 |
| DevSecOps | Security 기능 지원 |
GitLab CI는 Enterprise DevOps 환경에서 많이 활용되는 CI/CD Platform입니다.
자주 묻는 질문
GitLab CI와 GitHub Actions 차이는 무엇인가요?
GitHub Actions는 GitHub Platform 중심이고 GitLab CI는 GitLab Platform 내부에 CI/CD 기능이 통합되어 있습니다.
Jenkins보다 GitLab CI가 좋은가요?
환경에 따라 다릅니다.
GitLab 중심 환경에서는 편리하고, 기존 Enterprise 환경에서는 Jenkins를 계속 사용하는 경우도 많습니다.
Kubernetes와 함께 사용할 수 있나요?
가능합니다.
GitLab CI Pipeline을 통해 Container Image 생성과 Kubernetes Deployment 자동화를 구성할 수 있습니다.
마무리
GitLab CI는 GitLab Repository와 연결하여 Build, Test, Deployment 과정을 자동화하는 DevOps CI/CD Platform입니다.
| 구성 요소 | 역할 |
|---|---|
| Pipeline | 자동화 Workflow |
| Stage | 단계 관리 |
| Job | 작업 실행 |
| Runner | 실행 환경 |
| YAML | Pipeline 정의 |
GitLab CI 구조를 이해하면 Git 기반 Enterprise CI/CD Pipeline과 Cloud Native DevOps Architecture를 구축할 수 있습니다.