안녕하세요. 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
- Runners Expand 클릭 → runner 세팅 정보 확인 (URL, token)
또한 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가 연결된 것을 확인할 수 있습니다.
또한 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 설치하는 방법에 대해 간단하게 알아보는 시간이었습니다.
읽어주셔서 감사합니다.
댓글