본문 바로가기
협업툴,가상환경 정리/CI_CD 관련

gitlab-runner 구성 및 등록 / 깃러너

by 알 수 없는 사용자 2022. 9. 30.

참고 :   여기 튜토리얼 보면서 함. / 정리 간결하게 잘되어있음.

( 설치 부분 까지 있고 git runner 쪽에 대한 코드는 따로 없어서 밑에 링크 참조함 )

https://workshop.infograb.io/setup-gitlab/3_setup_gitlab/

 

3. GitLab 설치 및 구성 - Setup CI/CD System with GitLab

3. GitLab 설치 및 구성 Docker Compose를 사용하여 GitLab을 설치하고 시작합니다. GitLab Docker 이미지 GitLab Docker 이미지는 단일 컨테이너에서 필요한 모든 서비스를 실행하는 GitLab의 모놀리식(Monolithic)

workshop.infograb.io

 

gitlab 관련 성지

깃랩 도큐먼트 문서

https://docs.gitlab.com/ee/install/docker.html

 

GitLab Docker images | GitLab

Documentation for GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab, and GitLab Runner.

docs.gitlab.com

 

깃랩 ci.yml 도큐먼트 문서

https://docs.gitlab.com/ee/ci/yaml/index.html#configuration-parameters

 

`.gitlab-ci.yml` keyword reference | GitLab

Documentation for GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab, and GitLab Runner.

docs.gitlab.com

 

 

git runner 관련 예제 코드  ( git runner 관련코드 ) 

digitalocean 이라는 클라우딩 호스팅 업체에서 제공함. 

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 - GitHub - do-community/hello_hapi: Solution for Exercise 1 of Exercises For Programmers using Hapi and Lab for tests

github.com

 

그림 참고

https://otrodevym.tistory.com/entry/Gitlab-CICD-gitlab-ciyml-%EC%82%AC%EC%9A%A9-%EB%B0%A9%EB%B2%95

 

[Gitlab-CI/CD] .gitlab-ci.yml 사용 방법

Gitlab-CI/CD를 잘 다루려면 .gitlab-ci.yml의 동작 방식에 대해서 정리합니다. 관련 예제는 아래 사이트에서 확인할 수 있습니다. gitlab-ci/cd .gitlab-ci.yml Gitlab-CI/CD의 파이프라인은 .gitlab-ci.yml 파..

otrodevym.tistory.com

 

 

 


 

 

전제 : 도커 엔진 , 도커 컴포즈 설치 완료상태

 

1. git runner 설치 및 구성 ( 깃러너 컨테이너 구성 후 , 깃랩 서버 등록(깃랩서버 url , token 및 러너 executor 설정) ) - 전용 깃랩 서버를 다루는 ".gitlab-ci.yml" 명령어를 실행 시켜주는 역할

 

2. git runner 에 사용할 git-lab 등록

 

3. ".gitlab-ci.yml" 코드 작성  - 깃러너가 깃랩서버를 동작시켜서 어떤 깃랩프로젝트에 CD를 할지에 대한 기술을 해주는 스크립트. ( 깃랩 서버의 pipe-line 을 통해서 확인 )

 

 


방법  :

도커 컴포즈로 gitlab runner 컨테이너를 구성해서 사용할것

 

1. 도커 컴포즈에서 깃러너 구성 코드

services:
  gitlab-runner:
    container_name: robo_gitlab-runner
#    image: 'gitlab/gitlab-runner:v13.7.0'
#    image: 'gitlab/gitlab-runner:alpine'   # based on Alpine
    image: 'gitlab/gitlab-runner:latest'    # based on Ubuntu
#    image: 'git_runner_custom_image:latest'
    restart: ${RESTART}
    ports:
      - '2000:22'   # 외부 포트는 2000 실제 내부로 접속되는건 22 // 포트포워딩  # 깃랩러너에서 HOST로 접근하기 위한 포트포워딩
    networks:
      robolife_network:
        ipv4_address: "${NETWORK_ABC_CLASS}.20"
    #    network_mode: host
    privileged: true
    volumes:
      - '${GITLAB_HOME}:/etc/gitlab-runner'
#      - '/var/run/docker.sock:/var/run/docker.sock' # 도커안에서 도커를 쓰고 싶을 떄 쓰는 볼륨
      - './gitlab_ci_bash_for_deploy.sh:/app/gitlab_ci_bash_for_deploy.sh'
      - ./shared_volume:/shared_volume

기본 docker-compose 구성은 이렇게 짬.

..

1_1 볼륨 설명

'/var/run/docker.sock:/var/run/docker.sock'

도커 컨테이너 안에서 도커를 쓰고 싶을 때 쓰는 볼륨.

 

1_2 볼륨 설명

- '${GITLAB_HOME}:/etc/gitlab-runner'

/etc/gitlab-runner 디렉토리와 깃러너 볼륨바운딩

/etc/gitlab-runner 디렉토리안에 "config.toml" 파일이 있어야 한다. 없으면 에러남. touch로 빈파일 생성해도 괜찮음 

일일히 만들기 귀찮으면 깃러너의 디펜던시를 다른 컨테이너에 두고

다른컨테이너를 만드는 docker-compose 구성에서 entrypoint 명령어로  "config.toml" 이 없을시 touch로 생성 시키면 됨.

 

2. 빈 "config.toml" 파일을 "/etc/gitlab_runner"에 마운트된  폴더안에 생성

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

실제로는 깃러너 컨테이너 안의 "/etc/gitlab-runner" 에 생성되는 부분임

 

3. docker-compose -f docker-compose.yaml up 으로 컴포즈 실행

깃러너를 docker 컨테이너로 실행시켜준다

 

4. 깃러너 컨테이너 CLI 창에 접속해서 gitlab-runner register 명령어로 등록

4_1. 본인 깃랩 url 과 토큰을 알아야한다.

 

 

4_2. gitlab-runner register 명령어로 등록. ( cat /etc/gitlab-runner/config.toml 으로 확인 할 수 있다. )

docker exec -it gitlab-runner /bin/bash 로 도커 CLI 접속 

1. gitlab-runner register 

2. url

3. 토큰

4. 러너 설명

5. 러너 태그  

6. 실행시킬 executor 

7. 도커 이미지 ( alpine:latest or debian:buster) 알핀쓰면 고통스럽다.. 그냥 debian:buster 써서 편하게 쓰자

 

으로 하거나 

docker-compose exec -t gitlab-runner gitlab-runner register   로 도커 CLI 접속하지 않고 실행도 가능.

 

대화식 인터렉션식 말고 그냥 바로 정의해서 등록하는 방법도 있다.

docker run --rm -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register \
  --non-interactive \
  --executor "docker" \
  --docker-image alpine:latest \
  --url "https://gitlab.com/" \
  --registration-token "PROJECT_REGISTRATION_TOKEN" \
  --description "liam_laptop" \
  --maintenance-note "Free-form maintainer notes about this runner" \
  --tag-list "docker,aws" \
  --run-untagged="true" \
  --locked="false" \
  --access-level="not_protected"

 

docker-compose exec -t gitlab-runner bash -c \
  'gitlab-runner register -n \
  --url 유알엘 \
  --registration-token 토큰 \
  --description "edge_hansung_runner" \
  --tag-list "edge_hansung_runner" \
  --executor shell \
  --description "edge_hansung_runner"
'

 

 

sudo gitlab-runner register -n \
  --url https://gitlab.com/ \
  --registration-token REGISTRATION_TOKEN \
  --executor shell \
  --description "My Runner"

 

 

'협업툴,가상환경 정리 > CI_CD 관련' 카테고리의 다른 글

gitlab-ci 문법  (1) 2022.10.05
CI/CD 정의  (0) 2022.09.29

댓글