본문 바로가기
Devops/GitLab

[GitLab] GitLab Runner 설치하기 (Ubuntu 20.04)

by J4J 2022. 2. 4.
300x250
반응형

안녕하세요. J4J입니다.

 

이번 포스팅은 Ubuntu에 GitLab Runner 설치하는 방법에 대해 적어보는 시간을 가져보려고 합니다.

 

 

 

GitLab Runner 설치 방법

 

[ 1. root 계정 접속 ]

 

$ su - root

 

 

 

[ 2. repository 추가 ]

 

$ curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash

 

 

 

[ 3. gitlab-runner 설치 ]

 

$ sudo apt install gitlab-runner

 

 

반응형

 

 

[ 4. 연결할 gitlab 등록 ]

 

설치까지 완료되었다면 서버와 연동될 GitLab Repository를 등록해줘야 합니다.

 

그러므로 우선 연결될 Repository가 생성되어 있어야 하고 또한 연결을 위한 부가정보들도 확인해줘야 합니다.

 

 

 

부가정보들은 다음 절차를 통해 확인해주시면 됩니다.

 

  • GitLab Repository 접속 → 좌측 메뉴바 Settings → CI/CD

 

CI/CD 접속

 

 

 

  • Runners Expand 클릭 → runner 세팅 정보 확인 (URL, token)

 

runner 세팅 정보 확인

 

 

 

또한 GitLab Runner는 일반적으로 Docker와 많이 사용되고는 합니다.

 

저도 그럴 것이기 때문에 gitlab 등록에 사용하기 위해 Ubuntu에 설치된 Docker 버전도 확인해줍니다.

 

$ docker version

 

 

 

위의 모든 정보가 확인되었다면 Ubuntu에 다음 명령어를 입력하여 gitlab을 등록하도록 하겠습니다.

 

$ sudo gitlab-runner register

 

 

 

명령어를 입력하면 순서대로 하나씩 정보들을 등록해줘야 합니다.

 

Q: Enter the GitLab instance URL (for example, https://gitlab.com/):  (GitLab URL 입력하기)
I: https://gitlab.com/  (위에서 확인한 URL 카피하여 복사)

Q: Enter the registration token:  (GitLab Repository Token 입력하기)
I: ~~~~CA~~~~ (위에서 확인한 token 카피하여 복사)

Q: Enter a description for the runner:  (Runner Description 입력하기)
I: ex) GitLab Runner Test

Q: Enter tags for the runner (comma-separated):  (태그 입력하기, 여기서 입력된 태그는 gitlab-ci.yml파일에서 등록된 runner를 구분하기 위해 사용)
I: ex) dev-all

Q: Enter an executor: docker-ssh+machine, custom, parallels, shell, virtualbox, docker+machine, docker, docker-ssh, ssh, kubernetes:  (빌드에 사용되는 executor 선택)
I: ex) docker

Q: Enter the default Docker image (for example, ruby:2.6):  (Docker image default 입력)
I: docker:20.10.12  (위에서 확인한 docker 버전 입력)

 

 

 

부가 설명을 해보자면 executor 같은 경우는 보통 shell, docker 등을 사용하는 것으로 보입니다.

 

executor에 대한 설명이 있는 여러 글들을 참고해봤을 때 알게 된 점은 docker를 선택한다면 모든 것을 docker가 핸들링해주기 때문에 다른 소프트웨어들을 설치하지 않아도 된다고 합니다.

 

그래서 저도 docker를 선택을 했고 특정 기업들에서는 보안상의 이슈로 docker를 선택할 수 없다고 하는데 그럴 땐 shell을 선택하는 것이 바람직하다고 합니다.

 

 

 

 

[ 5. runner 연결 확인 ]

 

등록이 올바르게 되었다면 GitLab 사이트를 새로고침하여 다음과 같이 runner가 연결된 것을 확인할 수 있습니다.

 

runner 연결 확인

 

 

 

또한 Ubuntu에서는 다음 명령어를 통해 확인해줄 수 있습니다.

 

$ gitlab-runner list

 

 

 

 

Docker를 사용해서 배포하는 경우

 

해당 부분은 Docker + GitLab CI를 이용해 배포하시는 분들만 추가적으로 참고해주시면 됩니다.

 

Runner가 Ubuntu에 정상적으로 설치되었을 경우 /home으로 이동해보시면 gitlab-runner라는 계정이 생성된 것을 확인할 수 있습니다.

 

GitLab CI를 통해 서버에서 동작되는 모든 행동은 gitlab-runner 계정으로 수행되기 때문에 gitlab-runner 계정에 Docker 사용 권한을 부여해주셔야 Docker 사용이 가능해집니다.

 

권한을 부여하는 명령어는 다음과 같습니다.

 

$ sudo usermod -aG docker gitlab-runner // 권한 부여

 

 

 

또한 GitLab CI에 작성된 docker 명령어들은 모두 dind로 수행이 됩니다.

 

그렇기 때문에 다음 경로에 있는 파일에 접속해서 등록한 runner의 설정에 다음의 값들을 수정 및 추가해줘야 합니다.

 

$ vi /etc/gitlab-runner/config.toml

 

[[runners]]
  [runners.docker]
    privileged = true
    volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]

 

 

 

설정이 모두 완료되었다면 다음 명령어를 이용하여 docker를 재시작 해주면 됩니다.

 

$ service docker restart // 도커 재시작

 

 

 

 

GitLab Runner 관련 추가 명령어

 

  • GitLab Runner 서비스 시작
$ service gitlab-runner start

 

 

 

  • GitLab Runner 서비스 중지
$ service gitlab-runner stop

 

 

 

  • GitLab Runner 서비스 상태 확인
$ service gitlab-runner status

 

 

 

  • GitLab Runner 서비스 재시작
$ service gitlab-runner restart

 

 

 

  • 서버 재 시작 시 GitLab Runner 자동 실행 설정
$ sudo systemctl enable { target 명 } && service gitlab-runner // ex) sudo systemctl enable gitlab-runner && service gitlab-runner

 

 

 

  • GitLab Runner List 확인
$ gitlab-runner list

 

 

 

  • 등록된 register 삭제
$ gitlab-runner unregister -n {description 명} // ex) gitlab-runner unregister --name "GitLab Runner Test"

 

 

 

  • Runner 설정 파일
$ vi /etc/gitlab-runner/config.toml

 

 

 

  • gitlab-runner 계정 접속
$ su - root // 비밀번호 입력
$ su - gitlab-runner // 비밀번호 입력 불필요

 

 

 

 

참조

 

CI and CD in Java Application using Shell and Docker Executor on Gitlab

 

 

 

 

 

 

이상으로 Ubuntu에 GitLab Runner 설치하는 방법에 대해 간단하게 알아보는 시간이었습니다.

 

읽어주셔서 감사합니다.

 

 

 

728x90
반응형

댓글