1. GitLab이란?
GitLab은 Git 저장소 기반의 DevOps 플랫폼으로, 코드 저장, 이슈 트래킹, 코드 리뷰, CI/CD 파이프라인 실행 등을 지원합니다.
- 웹 인터페이스를 통해 프로젝트 관리 및 개발 흐름 제어
- .gitlab-ci.yml 파일을 통해 CI/CD 파이프라인을 정의
- 파이프라인 요청을 GitLab Runner에게 전달
DevOps는 소프트웨어 개발 팀과 IT 운영 팀 간의 협업을 강화하고 자동화하여 고품질의 서비스를 더 빠르게 제공하는 소프트웨어 개발 방법론입니다.
개발(Dev)과 운영(Ops) 팀이 서로 소통하고 협력하여 개발, 배포, 운영의 전 과정에서 효율성을 높이고, 신속하고 안정적인 서비스 제공을 목표로 합니다.
2. GitLab Runner란?
GitLab Runner는 GitLab에서 요청한 CI/CD 파이프라인을 실제로 실행하는 에이전트입니다.
- GitLab에 등록된 상태로 동작
- 파이프라인이 실행되면 GitLab로부터 .gitlab-ci.yml 내용을 받아 작업을 수행
- 여러 실행 환경 지원: Docker, Shell, Kubernetes, SSH 등
3. 동작 원리 흐름
- 개발자가 GitLab에 Push
- 코드 변경 사항을 푸시하면 GitLab은 .gitlab-ci.yml 파일을 읽고 파이프라인을 트리거합니다.
- GitLab이 GitLab Runner에게 Job 할당
- GitLab은 등록된 Runner 중에서 적절한 Runner를 찾아 Job을 할당합니다.
- Runner가 Job 실행
- Runner는 Job을 실행하기 위해 지정된 Executor(예: Docker)를 사용합니다.
- .gitlab-ci.yml에 정의된 단계(예: build, test, deploy)를 순차적으로 수행합니다.
- 실행 결과 보고
- Runner는 실행 결과(성공/실패 로그)를 GitLab에 다시 전달합니다.
- GitLab 웹 UI에서 로그 및 상태 확인 가능
4. 통신 흐름 요약
- Runner 등록 (1회 설정)
- GitLab 웹에서 등록 토큰(token) 을 받아서 Runner에 입력
- Runner가 GitLab에 자신을 등록함
- Runner가 GitLab에 주기적으로 폴링
- 일정 주기로 GitLab의 /api/v4/jobs/request REST API에 요청함
- 유휴 상태일 때 "새 Job 있어요?" 요청
- GitLab이 Job이 있으면 전달
- Runner가 Job 실행
- Runner가 GitLab 저장소에서 코드를 clone
- .gitlab-ci.yml에 정의된 스크립트대로 실행
- 로그, 상태, 아티팩트 등을 GitLab에 다시 업로드
- Job 상태 리포트
- /api/v4/jobs/:id 같은 API를 통해 상태(성공/실패/취소 등)를 GitLab에 전송
1. GitLab 소스 코드 저장 위치
# GitLab Docker 컨테이너 내부 경로
/var/opt/gitlab/git-data/repositories
2. GitLab Runner가 클론하는 소스 코드 저장 위치
GitLab Runner는 CI/CD 파이프라인을 실행할 때, GitLab 저장소에서 소스 코드를 클론(clone) 합니다. GitLab Runner가 소스 코드를 저장하는 위치는 Runner의 설정에 따라 다릅니다.
1. Shell Executor의 경우 (로컬 시스템 실행)
GitLab Runner는 기본적으로 작업 디렉토리에서 GitLab 저장소를 클론합니다. 소스는 보통 /home/gitlab-runner/builds/{project-name}/ 위치에 클론됩니다.
2. Docker Executor의 경우 (컨테이너 내에서 실행)
Docker Executor에서는 컨테이너 내부에서 소스 코드가 클론됩니다.
아래와 같이도 설정가능
[[runners]] name = "my-runner" url = "https://gitlab.com/" token = "your-registration-token" executor = "shell" builds_dir = "/path/to/custom/builds" [runners.custom] ...
Gitlab Rigister Example
sudo gitlab-runner register
Runtime platform arch=amd64 os=linux
Running in system-mode.
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
> https://gitlab.example.com/
Please enter the registration token:
> GR1348941qEXAMPLE
Please enter a description for the runner:
> my-docker-runner
Please enter tags for the runner (comma-separated):
> docker,ubuntu,ci
Please enter the executor: shell, docker, ssh, etc.:
> docker
Please enter the default Docker image (e.g. ruby:2.7):
> alpine:latest
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
'WEB개발보조 > CI&CD' 카테고리의 다른 글
gitlab + gitlab runner + docker, ci/cd (0) | 2025.02.21 |
---|