목차
- CI/CD란?
- GitLab CI/CD
- gitlab runner란?
- gitlab runner 등록
CI/CD란?
CI (Continuous Integration)
지속적인 통합이라는 뜻으로, 코드 변경을 지속적으로 빌드/테스트하는 과정
CD (Continuous Delivery /Deployment)
지속적인 전달, 배포라는 뜻으로, 통합된 코드를 배포하는 과정
- Continuous Delivery
애플리케이션이 배포되기 전까지 작업을 자동화 하고 실제 배포는 사람이 개입하여 실행 - Continuous Deployment
CI를 통해 신규 작성된 코드의 무결성을 검증하고 배포 작업을 진행하고 완료시 자동으로 배포까지 진행
GitLab CI/CD
GitLab은 소프트웨어 개발 및 협업 솔루션을 제공하는 웹 기반 DevOps 플랫폼입니다.
GitLab에서의 CI/CD기능은 코드가 변경될때(push, merge) 자동으로 감지해서 무엇을 실행할지를 정의합니다.
무엇을 실행할지 정의는 기본으로 .gitlab-ci.yml 파일에 작성됩니다.
어떤 파일을 기준 변경은 gitlab 프로젝트의 Settings 화면에서 관리가 가능합니다.

코드의 변경이 발생하면 GitLab CI가 변경을 감지하고 파이프라인을 생성하여 .gitlab-ci.yml 파일을 분석하여 작업(job)별로 빌드, 테스트, 배포를 자동화합니다.
즉, GitLab CI/CD는 파이프라인 정의자 입니다.
# .gitlab-ci.yml 예시
stages:
- build
- test
- deploy
build_job:
stage: build
script:
- echo "Building project..."
- ./gradlew build
test_job:
stage: test
script:
- echo "Running tests..."
- ./gradlew test
deploy_job:
stage: deploy
script:
- echo "Deploying..."
- kubectl apply -f deployment.yaml
GitLab Runner란?
GitLab Runner는 GitLab의 요청으로 변경사항을 자동으로 빌드, 테스트 및 배포하는 CI 도구

GitLab CI가 코드 변경을 감지하고 파이프라인을 생성해서 빌드, 테스트를 수행한다고 했습니다.
생성된 파이프라인에서 정의된 작업들을 단계별로 실행하는 역할을 GitLab Runner가 수행합니다.
config.toml
gitlab runner를 등록하면 gitlab-runner 컨테이너의 /etc/gitlab-runner 경로에 config.toml파일 이 생성됩니다.
해당 파일은 파이프라인을 수행하는 runner의 정보를 담고있는 주요 설정 파일입니다.

주요 요소는 아래와 같습니다.
- name
gitlab-runner의 이름 - token
gitlab서버와의 통신에 필요한 인증 토큰 - executor
job을 실행하는 실제 환경- 요소
- Docker - Runner가 docker 데몬에게 job에 지정된 이미지를 기반으로 새로운 컨테이너 생성 명령을 내림
- Shell - Runner가 설치된 호스트 머신 자체의 쉘 환경에서 job을 실행
- Kubernetes - Job을 kubernetes클러스터의 pod로 실행
- 요소
GitLab Runner 동작 원리

- 코드 푸시 or 머지
- GitLab에 변경된 코드를 푸시 혹은 머지 수행
- 작업 확인 시 GitLab CI이 .gitlab-ci.yml파일 인식
- 파이프라인 생성
- GitLab CI는 .gitlab-ci.yml을 파싱
- Job을 스케줄링
- GitLab Runner에게 요청 전달
- GitLab은 등록된 Runner들에게 해당 Job을 수행할 수 있는지 질의(Polling)
- Runner는 해당 Job을 수신받고 Job 수행에 필요한 환경변수 등을 파악합니다.
- GitLab Runner가 실제 Job 실행
- Runner는 config.toml에 설정된 Executor를 호출
- executor가 준비되면 .gitlab-ci.yml의 before_script, script, after_script 섹션에 정의된 명령어를 순차적으로 실행합니다.
- GitLab이 결과 수집 및 표시
- Executor는 명령어가 실행되는 동안 Runner에게 로그, 상태 및 생성된 아티팩트를 지속적으로 전달
- Runner는 전달받은 로그와 상태 및 아티팩트들을 Gitlab에게 전달하여 파이프라인 상태를 업데이트 시킵니다
- Job이 끝나게 된다면 Runner는 Executor환경을 초기화 하고 다음 Job이 요청올때까지 대기합니다.
GitLab Runner 종류
참고하는 글마다 Shared Runner, Group Runner, Specific Runner로 분류가 되어있는데, 저는 gitlab버전이 달라서 그런지 종류가 달랐습니다. GitLab 17.9 버전 기준입니다.

Project runners (Specific Runner) 개인화 러너
단일 프로젝트 전용의 runner입니다.
해당 runner는 다른 프로젝트와 공유해서는 안 되는 고유한 요구 사항이나 리소스가 있을 때 유용할 수 있습니다.
프로젝트의 Owner 이상 역할의 계정만 제어가 가능합니다.
Group runners 그룹 러너
gitlab 내의 특정 프로젝트 그룹 전용 runner입니다.
해당 runner는 다른 프로젝트에 영향을 주지 않고 해당 그룹 내의 프로젝트에서만 사용할 수 있습니다.
그룹의 Owner 이상 역할의 계정만 제어가 가능합니다.
Instance runners (Shared Runner) 공유 러너
gitlab 내 모든 프로젝트에서 사용할 수 있는 runner입니다.
여러 프로젝트 및 팀에 공통 빌드 환경을 제공하려는 경우에 유용합니다.
관리자(admin) 역할의 계정만 제어가 가능합니다.
GitLab Runner 등록
해당 과정은 GitLab 17.9 버전이며 gitlab, gitlab-compose, gitlab-runner(컨테이너)가 설치 되어있다는 가정하에 진행됩니다.
공유 러너 Instance runners 등록 예시입니다. Admin 권한이 필요한 작업입니다.
(1) Admin 페이지 이동

(2) CI/CD > Runners 설정 페이지 이동 & New Instance runner 클릭


(3) Runner 생성

Tags 생성되는 runner의 구분자로 이후 사용자가 runner를 구분 할때 사용됩니다.
(4) 생성된 runner 정보(step1) 복사

(5) 터미널에서 gitlab-runner 컨테이너에 대화형으로 접근

gitlab-runner 컨테이너에 대화형 명령어(docker exec -it gitlab-runner /bin/bash)를 이용해서 접근
(6) runner 등록

(7) runner 등록 확인
(7.1) config.toml
runner 등록이 성공하면 gitlab-runner 컨테이너 /etc/gitlab-runner/config.toml에 등록한 runner의 정보가 입력됩니다.

(7.2) You've registered a new runner!
gitlab-runner를 생성했던 페이지로 가면 새로운 runner가 등록되었다는 부분이 추가되어있는걸 확인할 수 있습니다.

(7.3) runner 상태 확인
등록한 runner의 id가 gitlab 프로젝트에서 활성화(초록 상태) 되어있는지 확인합니다.
초록 상태이면 gitlab-runner 컨테이너에서 등록한 runner가 정상적으로 동작하고 gitlab과 연결이 정상적임을 나타내는 것입니다.


참고
https://gitlab-docs.infograb.net/runner/
GitLab 공식 기술 문서 한글판 by 인포그랩 | 인포그랩 | GitLab 기반 DevSecOps 구축,컨설팅,교육,CICD Pipe
GitLab의 Selected 파트너 인포그랩에서 OpenAI 기술 기반으로 자체 개발한 자동화 번역 프로그램을 통해 GitLab 공식 기술 문서의 한글판을 국내 최초로 제공합니다.
gitlab-docs.infograb.net
https://gitlab-docs.infograb.net/ee/ci/runners/configure_runners.html
GitLab 공식 기술 문서 한글판 by 인포그랩 | 인포그랩 | GitLab 기반 DevSecOps 구축,컨설팅,교육,CICD Pipe
GitLab의 Selected 파트너 인포그랩에서 OpenAI 기술 기반으로 자체 개발한 자동화 번역 프로그램을 통해 GitLab 공식 기술 문서의 한글판을 국내 최초로 제공합니다.
gitlab-docs.infograb.net
2. GitLab이란? / GitLab Runner 개념 및 설치
Overview오늘은 GitLab Runner의 개념과 설치 방법에 대해 알아보려고 한다. GitLab Runner는 GitLab과 함께 작동하여 코드 변경 사항을 자동으로 빌드, 테스트 및 배포하는 CI 도구이다. 다양한 운영 체제 및
somaz.tistory.com
https://workshop.infograb.io/setup-gitlab/4_setup_gitlab_runner/
4. GitLab Runner 설치 및 구성 - Setup CI/CD System with GitLab
4. GitLab Runner 설치 및 구성 GitLab이 설치된 머신과 다른 별도의 머신에 Docker Engine과 Docker Compose를 설치합니다. Docker Compose를 사용하여 Runner를 설치하고 GitLab에 등록합니다. GitLab Runner 설치 GitLab Run
workshop.infograb.io
https://multifrontgarden.tistory.com/264
CI(Continuous Integration) / CD(Continuous Delivery) / CD(Continuous Deployment)
CI(Continuous Integration) 란 말은 예전부터 많이 들어본 분들이 있을것이다. CI 와 함께 대표적인 CI 툴로 jenkins 를 알고있고, 사용하고있는 분들도 많을 것이다. 그러다가 언젠가부터 CI 를 넘어서서 CD
multifrontgarden.tistory.com
'develop > server' 카테고리의 다른 글
| [ERROR] GitLab pipeline pending (Job is stuck. Check runners.) (0) | 2025.11.09 |
|---|---|
| [Docker] 폐쇄망 React + Nginx 도커 이미지로 배포 (1) | 2025.11.07 |
| [Docker] 폐쇄망에서 프로젝트 구축하기 (0) | 2025.11.05 |
| [Docker] Docker란 (0) | 2025.10.31 |
| [Gitlab] gitlab-runner 등록 (0) | 2025.10.22 |