[CI/CD] GitLab Runner 로 CI 빌드 및 테스트

etc-image-0

 

GitLab Runner 를 통해 CI 빌드 및 테스트

 

GitLab Runner 설치 가이드 링크

 

Run GitLab Runner in a container | GitLab Docs

Run GitLab Runner in a container Tier: Free, Premium, UltimateOffering: GitLab.com, GitLab Self-Managed, GitLab Dedicated You can run GitLab Runner in a Docker container to execute CI/CD jobs. The GitLab Runner Docker image includes all dependencies needed

docs.gitlab.com

 

1. GitLab Runner 컨테이너 실행

GitLab Runner 도커 이미지 다운로드

docker pull gitlab/gitlab-runner:latest

 

먼저 로컬에 /app/gitlab-runner 폴더를 생성한 후 GitLab Runner 컨테이너를 실행한다.

mkdir -p /app/gitlab-runner/config

docker run -d --name gitlab-runner --restart always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /app/gitlab-runner/config:/etc/gitlab-runner \
  gitlab/gitlab-runner:latest

 

etc-image-1

 

 

2. CI 샘플 예제 가져오기 

https://github.com/do-community/hello_hapi

 

GitHub - do-community/hello_hapi: Solution for Exercise 1 of Exercises For Programmers using Hapi and Lab for tests

Solution for Exercise 1 of Exercises For Programmers using Hapi and Lab for tests - do-community/hello_hapi

github.com

 

etc-image-2

 

 

샘플 깃허브 URL 복사 후, 새로운 프로젝트 만들기 -> Import project 를 클릭한다.

 

etc-image-3

 

아래와 같이 Import 옵션이 비활성화되어 가져올 수 없는 것으로 나오는데

 

etc-image-4

 

하단에 관리자 클릭 

 

etc-image-5

 

 

설정에서 Repository by URL 옵션을 활성화한다.

etc-image-6

 

 

다시 프로젝트 생성 -> Import Project -> Repository by URL 클릭

 

etc-image-7

 

URL 입력창에 샘플 깃허브 복사 후 붙여넣는다.

etc-image-8

 

프로젝트를 정상적으로 가져왔는 지 확인한다.

 

etc-image-9

 

.gitlab-ci.yml 파일에서 해당 프로젝트의 CI 부분이 정의가 되어 있다.

commit 을 하게 되면 .gitlab-ci.yml 의 구성대로 빌드 및 테스트가 진행된다.

 

etc-image-10

 

3. GitLab Runner 등록

GitLab 에서 CI 작업이 진행되기 위해, GitLab Runner 도커 실행까지 진행하였다.

빌드 및 테스트를 위해서는 해당 GitLab Runner 를 GitLab 에 등록을 해야한다.

 

3.1 GitLab Runner 생성

etc-image-11

 

3.2 러너 설정

etc-image-12

 

- Run untagged jobs (태그가 지정되지 않은 작업 실행) 체크

 

생성 후 등록할 수 있는 URL 과 Token 을 볼 수 있다.

etc-image-13

 

3.3 GitLab Runner 컨테이너 접속

docker exec -it gitlab-runner bash

etc-image-14

 

 

3.4 GitLab Runner 등록

gitlab-runner register  --url http://{GitLab_IP} --token {Token}

Enter an executor: instance, shell, docker-windows, parallels, virtualbox, docker, docker+machine, kubernetes, docker-autoscaler, custom, ssh:
docker

Enter the default Docker image (for example, ruby:2.7):
alpine:latest

 

etc-image-15

 

4. CI 빌드 및 테스트

 

4.1 샘플 프로젝트 커밋

 

샘플 예제로 가져온 프로젝트에 새로운 파일을 추가한다.

 

etc-image-16

 

etc-image-17

4.2 GitLab 빌드 및 배포 확인

 

Jobs 로 이동한 후, 빌드가 되는 것을 확인할 수 있다.

 

etc-image-18

 

 

 

4.3 배포 시 "Could not resolve host: gitlab.example.com" 에러 발생 시

 

etc-image-19

 

gitlab-runner 에서 gitlab.example.com 에 대한 도메인을 찾지 못하여 발생하는 이슈이다.

 

로컬 리눅스에서 /app/gitlab-ruuner/config/config.toml 파일에 도메인에 대한 IP 를 추가해주자.

 

[runners.docker]
    extra_hosts = ["gitlab.example.com:{GitLab_IP}"]

 

 

4.4 빌드 및 배포 확인

etc-image-20