Git/GitLab

GitLab Group Runner Docker Container

김 정출 2024. 7. 24. 11:39

지난번 GitLab Project Runner는 단일 Project에서만 동작하였습니다.
- GitLab Project Runner using Docker (https://jeongchul.tistory.com/717)

Group 내에 여러 Project를 처리할 수 있는 Runner는 Group Runner입니다.
Group Runner를 Docker Container 기반으로 실행해보겠습니다.

GitLab Group Runner를 생성하기 위해서는 Group의 Owner Role을 가지고 있어야합니다.

Tags의 경우 지정된 태그로만 Job을 생성합니다.

  • Tag 설정 외에도 Job이 실행되려면 Run untagged jobs를 체크합니다.
    Description을 작성하고 Create Runner 버튼을 클릭합니다.

이전 Project runner와 생성하는 방식은 동일합니다.

  • 하기의 Access Token을 활용한 Command를 통해 GitLab Container 내부에서 register를 진행합니다.

Runner를 실행할 환경에서 다음의 명령어로 GitLab Runner를 실행합니다.

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

Container로 접속해 gitlab-runner register 명령어로 등록을 진행합니다.

docker exec -it gitlab-runner /bin/bash
$ gitlab-runner register  --url https://gitlab.com  --token [YOUR_TOKEN]

등록을 마치고 /etc/gitlab-runner/config.toml에 들어가 다음의 설정을 진행합니다.

  • privileged를 true로 두어 container build시에 dind 형태로 runner container에서 container를 생성할 수 있도록 권한을 부여합니다.
apt update
apt instsall vim -y
vi /etc/gitlab-runner/config.toml
---
[[runners]]
  ...
  url = "https://gitlab.com"
  ...
  executor = "docker"
  [runners.custom_build_dir]
  ...
  [runners.docker]
    tls_verify = false
    image = "golang"
    privileged = true # <-------------------- privileged true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
    network_mtu = 0

새로운 Group Runner가 등록되었습니다.


Group Runner를 여러개 등록하면 여러 Pipeline 실행 시에 각 Runner로 분배되어 parallel하게 Jobs들을 수행해나갑니다.

감사합니다.