CHAPTER 01 · 고객 문의 2번
01. GitLab CI/CD 기능 상세
고객 문의 — GitLab CI/CD 기능 상세 — 실제 데모 혹은 화면이라도 어떻게 구성되어 있는지 확인이 가능하면 좋겠습니다.
요약 답변
GitLab CI/CD는 저장소 루트의 .gitlab-ci.yml 파일 하나로 파이프라인을 정의합니다. Stage(단계)와 Job(작업)으로 구성되고, 커밋·Merge Request·스케줄·수동 실행 등으로 파이프라인이 시작되며, Runner라는 실행 에이전트가 Job을 수행합니다. 웹 UI에서 파이프라인 편집기, 시각화, 실행 이력, Job 로그, 테스트·보안 리포트까지 모두 확인할 수 있습니다. GitLab CI/CD 자체는 Free 티어부터 모든 배포 형태(GitLab.com, Self-Managed, Dedicated)에서 제공됩니다.
화면 흐름 (Siren Order 프로젝트 실제 화면)
아래 순서대로 보여주면 "구성 → 시각화 → 실행 이력 → 단계별 결과 → Job 상세 → 보안 리포트 → 실행 로그" 전체 흐름이 한 번에 설명됩니다.
01-1. 파이프라인 편집기 (Pipeline Editor)

- 위치: 프로젝트 > Build > Pipeline editor
.gitlab-ci.yml을 웹에서 직접 편집하고 문법 검증을 받을 수 있습니다. 화면 상단에 "Pipeline syntax is correct"처럼 즉시 검증 결과가 표시됩니다.- 이 프로젝트는 로컬 파일에 전체 파이프라인을 직접 적는 대신, 그룹 공유 템플릿 프로젝트(
infograb/devrel/devsecops-platform/templates)를include로 가져와 사용합니다. 조직 표준 파이프라인을 중앙에서 관리하는 방식입니다.
01-2. 파이프라인 시각화 (Visualize)

- 편집기의 Visualize 탭이 설정 파일을 해석해 Stage별 Job 그래프를 그려줍니다.
- 이 프로젝트는 build 1개 Job, test 27개 Job 등으로 확장되는 것을 확인할 수 있습니다. include된 템플릿까지 합쳐서 최종 형태를 보여주므로, 실제 실행 전에 구성을 검토하기에 좋습니다.
01-3. 파이프라인 실행 목록

- 위치: 프로젝트 > Build > Pipelines
- 이 프로젝트에는 실제 실행 이력 18건이 있습니다. 각 행에서 상태( Passed / Warning / Failed / Skipped / Canceled ), 커밋 메시지, 브랜치, Stage별 진행 상태를 한눈에 봅니다.
- 목록에서 branch / merge request / latest / agent session 같은 배지로 파이프라인이 어떤 경로로 시작됐는지 구분됩니다.
01-4. 파이프라인 상세 (Stage 그래프)

- 개별 파이프라인 화면에서 Stage 순서대로 Job 카드가 배열됩니다. 이 실행은 build → test(단위 테스트, SAST, Secret Detection, IaC 스캔) → package(BuildKit 컨테이너 빌드) → verify(컨테이너 스캔) → dast 순서입니다.
- 상단에 커밋, 연결된 Merge Request, 총 소요 시간, Job 수가 표시됩니다.
- dast Job은 "allowed to fail"로 설정되어 있어 실패해도 파이프라인 전체는 Warning으로 유지되는 사례를 보여줍니다. 보안 스캔을 점진적으로 도입할 때 쓰는 방식입니다.
01-5. Job 목록과 결과

- Jobs 탭에서 각 Job의 상태, 소요 시간, Stage, 아티팩트 다운로드/열어보기를 제공합니다.
gradle:build,gradle:test,semgrep-sast,secret_detection,kics-iac-sast,docker:buildkit,container_scanning,dast8개 Job이 보입니다.
01-6. 파이프라인 보안 리포트

- Security 탭에서 SAST, Container Scanning, Secret Detection 결과를 취약점 단위로 확인합니다.
- 참고: 보안 스캔 제품군은 Ultimate 기능입니다. Premium 환경에서는 이 탭 대신 CI 로그와 아티팩트(JSON 리포트)로 결과를 확인하는 방식을 안내합니다. (티어 구분은 챕터 03. Premium 기능 사용 범위 참고)
01-7. Job 실행 로그

- Job을 클릭하면 실시간 실행 로그가 표시됩니다. 사용된 Runner(executor, 이미지), 스캔 대상 컨테이너, 생성된 아티팩트(
gl-container-scanning-report.json, SBOM)까지 추적됩니다. - 장애 분석 시 이 화면에서 원인을 직접 확인합니다.
주요 개념 정리
| 개념 | 설명 | 비고 |
|---|---|---|
| Pipeline | 커밋/MR/스케줄/수동 실행으로 생성되는 CI/CD 실행 단위 | Stage > Job 구조 |
| Stage | Job 실행 순서를 정의 (build, test, deploy 등) | 같은 Stage의 Job은 병렬 실행 |
| Job | 스크립트를 실행하는 최소 단위 | 컨테이너 이미지 지정 가능 |
| Runner | Job을 실제로 실행하는 에이전트 | Self-Managed는 자체 Runner 등록, GitLab.com은 Linux/Windows/macOS 공유 Runner 제공 |
| CI/CD 변수 | 비밀번호·API 키 등 설정값 전달 | Protected(보호 브랜치 전용)·Masked(로그 마스킹) 지원 |
| Artifacts | Job 산출물 저장/전달 (JAR, 리포트, SBOM) | 후속 Job으로 전달 가능 |
| include / 컴포넌트 | 파이프라인 설정을 재사용 단위로 분리 | CI/CD Catalog에 버전별 공개 가능 |
| Merge Request 파이프라인 | MR 소스 브랜치 내용으로 실행 | 병합 전 품질 게이트로 사용 |
| Environments | 배포 대상 환경 관리 | 수동 승인(보호 환경)과 연계 가능 |
| Pipeline schedules | 정기 실행 (야간 스캔 등) | cron 형식 |
데모 프로젝트의 실제 구성 (참고 설명용)
- Siren Order는
include로 공유 템플릿 9개(글로벌, Gradle, Docker, SAST, Dependency Scanning, Secret Detection, Container Scanning, DAST, IaC)를 가져오고, 프로젝트 변수(DOCKER_BUILD_TOOL: buildkit등)로 동작을 조정합니다. - juice-shop은 CI/CD Catalog 컴포넌트(secret-detection, sast-scanner, dependency-scanning, kaniko-build, container-scanning, license-compliance 등)를 단계별로 조합한 구성입니다. 컴포넌트는 버전을 고정해 재사용할 수 있습니다.
공식 출처
- CI/CD 개요: https://docs.gitlab.com/ci/ (Tier: Free, Premium, Ultimate / Offering: GitLab.com, Self-Managed, Dedicated)
- CI/CD 컴포넌트와 Catalog: https://docs.gitlab.com/ci/components/
- 파이프라인 상세: https://docs.gitlab.com/ci/pipelines/
