
GitLab Runner로 CI/CD 구축하기
1. 개념
GitLab Runner란?
- GitLab CI/CD 파이프라인의 작업을 수행하는 에이전트
- .gitlab-ci.yml 파일에 작업을 정의
GitLab 자체는 코드 저장, 프로젝트 관리, CI/CD 파이프라인 설정 등의 기능은 제공하지만,
컴파일, 테스트, 실행 등의 능력은 존재하지 않는다.
따라서 이러한 동작들을 GitLab Runner가 수행한다.
작동 방식
- 작업 요청
- GitLab 에 코드를 push 하면 CI/CD 파이프라인이 트리거 된다.
- 작업 할당
- GitLab 서버는 실행할 작업을 큐에 넣고, 등록된 Runner에 할당한다.
- 작업 실행
- GitLab Runner 는 할당된 작업(소스 코드 다운로드, 빌드, 배포, 실행 등)을 수행한다.
- 결과 보고
- GitLab Runner 는 작업 과정의 로그, 성공/실패 여부, 아티팩트 등을 GitLab 서버에 전달한다. 개발자는 UI를 통해 실시간으로 확인할 수 있다.
GitLab Runner 종류
- Shared Runner: GitLab 인스턴스 전체의 모든 프로젝트가 공유해서 사용하는 Runner
- Group Runner: 특정 그룹에 속한 모든 프로젝트들이 공유해서 사용하는 Runner
- Specific Runner: 특정 하나의 프로젝트만을 위해 등록된 Runner
Tags
.gitlab-ci.yaml 파일에서 특정 작업(Job)을 특정 Runner에게 할당하기 위해 사용
2. Runner 설치
공식 문서

GitLab 에 업로드 한 Repo 설정 클릭

좌측 메뉴 - CI/CD - Runners - Create instance runner 클릭

Runner는 Tag를 통해 Job의 실행 여부를 체크한다!
Tag 입력 후 Create Runner 클릭
unit_test:
stage: test
script: ./gradlew test
tags:
- test
build_app:
stage: build
script: ./gradlew build
tags:
- build
예시) 만약 Runner A의 Tag가 build라면
build_app Job만 실행한다. unit_test 는 실행 X

배포 서버에 해당하는 환경 선택

- Runner 등록 명령어 실행
- 터미널에 복사-붙여넣기
- Excutor 선택
- shell → Runner 서버에서 바로 명령어 실행
- docker → Runner가 job을 Docker 컨테이너 안에서 실행
- ssh → 원격 서버에 SSH 접속해서 job 실행
- kubernetes → K8s 클러스터에서 job 실행
- gitlab-runner run
- foreground로 실행 확인


Online 으로 된 것을 확인한다
3. 환경변수 설정
gitlab-ci.yaml 에 등록하지 못하는 민감한 정보들은 환경변수를 선언하여 사용할 수 있다.


4. 배포

Repo 최상단 경로이 .gitlab-ci.yaml 파일을 작성하여 push 한다.
push 하면 정의한 파이프라인이 실행된다.
# .gitlab-ci.yaml
stages:
- build
- deploy
# 1️⃣ Build 단계
build:
stage: build
tags:
- build
image: gradle:8.3-jdk17
script:
- chmod +x ./gradlew
- ./gradlew clean build
artifacts:
paths:
- build/libs/
- run.sh # run.sh도 artifacts로 저장
expire_in: 1h # 필요시 아티팩트 유지 시간 설정
# 2️⃣ Deploy 단계
deploy:
stage: deploy
tags:
- build
image: openjdk:17-jdk-slim
script:
# 배포 디렉터리 생성
- sudo -u deploy mkdir -p /home/deploy
# 기존 JAR 삭제 (빌드가 여러 번 되어도 충돌 방지)
- sudo -u deploy rm -f /home/deploy/*.jar
# 빌드된 JAR 파일 복사
- sudo -u deploy cp build/libs/jenkins-practice-0.0.1-SNAPSHOT.jar /home/deploy/app.jar
# run.sh 복사 및 실행 권한 부여
- sudo -u deploy cp run.sh /home/deploy/run.sh
- sudo -u deploy chmod +x /home/deploy/run.sh
# run.sh 실행
- sudo -u deploy /home/deploy/run.sh

Repository - Build - Pipelines


빌드의 성공, 실패를 확인할 수 있다


빌드 과정에서 발생하는 로그를 확인할 수 있다.
'CICD > GitLab' 카테고리의 다른 글
| [GitLab] GitLab 설치 및 구성하기 (0) | 2025.09.19 |
|---|