참고 : 여기 튜토리얼 보면서 함. / 정리 간결하게 잘되어있음.
( 설치 부분 까지 있고 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 |
댓글