728x90
반응형
상황
- Docker Desktop for Windows (도커 윈도우버전)가 설치되어있고, GitLab이 설치되어있다. (Docker-Compose사용)
- GitLab CI/CD(빌드/배포)를 위해 GitLab-Runner를 셋팅해야 한다.
처리방법
GitLab-Runner Docker
구동 실패
- 결론 부터 말하면 Docker Desktop for Windows 에서는 Unix소켓을 지원하지 않아서 불가능하다고 한다.
- 셋팅을 해보면 docker.sock라는 파일이 생성이 되지않아서 오류가 발생하는데 docker.sock 은 도커 컨테이너 내부에서 데몬과 상호 작용을 할 수 있게 해주는 Unix 소켓이라고 한다.
- 또 다시 삽질을 하지 않기 위해 실패 과정도 기록해놓으려고 한다, 만약 GitLab-Runner Window버전 으로 설치 성공한 내용으로 바로 보고싶다면 아래로 내려서 "GitLab-Runner Windows" 부분 부터 보면된다.
- 실패 과정이니 절대 따라하지마세요. (보고 참고만 하세요)
Docker-compose 수정
- 먼저 GitLab을 정지시킨다
docker-compose down
- GitLab 셋팅한 Docker-compose.yml 파일을 열고 gitlab-runner 내용을 추가한다.
- Volumes 3번째 줄에 docker.sock가.. 위에서 말한 데몬과 상호작용하는 Unix소켓이다.
- depends_on은 종속성 설정이다. gitlab이 있어야 gitlab-runner를 돌릴수있다는 의미.
- hostname, external_url 은 ...으로 넣어놨는데, 설정하는 서버에 맞게 지정해주면된다.
version: '3.6'
services:
gitlab:
image: "gitlab/gitlab-ce:latest"
container_name: gitlab
restart: unless-stopped
hostname: "..."
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url '...'
gitlab_rails['gitlab_shell_ssh_port'] = 9022
TZ: 'Asia/Seoul'
ports:
- "9080:80"
- "9443:443"
- "9022:22"
volumes:
- "../../volumes/gitlab/config:/etc/gitlab"
- "../../volumes/gitlab/logs:/var/log/gitlab"
- "gitlab_data:/var/opt/gitlab"
shm_size: 1G
networks:
- gitlab
gitlab-runner:
image: "gitlab/gitlab-runner"
container_name: gitlab-runner
restart: unless-stopped
depends_on:
- gitlab
environment:
TZ: 'Asia/Seoul'
volumes:
- "../../volumes/gitlab-runner/etc/gitlab-runner:/etc/gitlab-runner"
- "../../volumes/gitlab-runner/home/gitlab-runner:/home/gitlab-runner"
- "../../volumes/gitlab-runner/var/run/docker.sock:/var/run/docker.sock"
shm_size: 1G
volumes:
gitlab_data:
Docker-compose up (구동)
- docker-compose.yml 파일을 수정했다면 docker-compose up -d 를 해서 gitlab과 gitlab-runner가 구동되는 것을 확인한다.
docker-compose up -d
- Runner가 구동되면 Volumes에 지정한 폴더를 sharing 할건지 묻는데 Share it 버튼을 눌러서 승인해준다.
- 이제 "docker exec -it gitlab-runner /bin/bash" 로 runner에 들어가서 "gitlab-runner register" 명령을 친다음 GitLab프로젝트 페이지의 setting > runner 페이지에 url, token 정보를 넣고 runner 등록을 진행한다.
( GitLab 프로젝트에 Runner를 등록하는 방법은 https://yourusername.tistory.com/114 참고 ) - Pipeline을 돌려보면 아래와 같이 오류가 발생하는데 원인이 Docker Desktop for Windows 에서 Unix소켓을 지원하지 않아서 발생하는 오류란다.
Docker-compose down (정지) & 원상복구
- Docker Desktop for Windows에서는 Runner를 docker로 돌리는건 안된단거 알았으니까, 원상복구 시키자.
- 먼저 docker-compose down으로 정지시키고
docker-compose down
- GitLab-Runner Docker로 돌릴때 File Sharing 했던것도 정리해준다.
- 상단에 톱니모양 아이콘을 클릭하면, 좌측에 Setting 메뉴가 열리는데 Resources > File Sharing 항목을 선택해준다.
- Docker Desktop for Windows 의 File Sharing 정보가 보이면 Runner를 위해 추가했던 File Sharing 정보를 지워준다.
- - 버튼을 눌러 다 지워줬으면, 하단에 Apply & restart버튼을 눌러준다.
- 그리고 상단에 X버튼을 눌러주면 Setting 메뉴에서 빠져나갈수 있다.
- 이제 docker-compose.yml 을 원상복구 시켜놓고
version: '3.6'
services:
gitlab:
image: "gitlab/gitlab-ce:latest"
container_name: gitlab
restart: unless-stopped
hostname: "..."
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url '...'
gitlab_rails['gitlab_shell_ssh_port'] = 9022
TZ: 'Asia/Seoul'
ports:
- "9080:80"
- "9443:443"
- "9022:22"
volumes:
- "../../volumes/gitlab/config:/etc/gitlab"
- "../../volumes/gitlab/logs:/var/log/gitlab"
- "gitlab_data:/var/opt/gitlab"
shm_size: 1G
networks:
- gitlab
- docker-compose up -d 명령을 사용해서 아무일도 없었던것 처럼 GitLab만 다시 구동시켜놓자.
docker-compose up -d
GitLab-Runner Windows
다운로드
- Windows용 GitLab-Runner가 별도로 있다 그냥 그걸로 하자
https://docs.gitlab.com/runner/install/windows.html
- 위 사이트에 접속 해서 서버에 맞는 bit를 선택해서 다운로드 한다.
- 다운로드가 완료되면 C:\gitlab-runner 폴더(정해진건 아니다) 에 집어넣는다.
GitLab-Runner 등록
- 파워쉘을 띄운다음 gitlab-runner-windows-....exe register 명령을 실행해준다.
- URL, Token은 Gitlab 프로젝트 CI/CD > Runner 에 있는 정보를 참고한다.
- URL, Token정보랑 executor등 정보를 넣고 Runner 등록을 마무리한다
- 등록이 완료되면 config.toml 파일에 저장되고, 파일을 열어보면 내가 등록한 Runner정보를 확인할 수 있다. (잘못등록했으면 여기서 수정해주면 된다)
Runner has never contacted this instance ?
- 러너 등록이 끝나서 프로젝트 Setting 메뉴에 Runner 등록이 잘됐는지 확인해보려는데, 이런 메시지가 떳다.
- 다시 파워쉘로 돌아와서 등록한 Runner 상태를 확인해봤다.
- 등록된 Runner가 Stop라고 나와서 start 를 해줬다.
#등록된 러너 조회
gitlab-runner-windows-amd64.exe list
#등록된 러너들 상태 확인
gitlab-runner-windows-amd64.exe status
#시작이 안된 러너 start
gitlab-runner-windows-amd64.exe start gitlab-runner
#등록된 러너들 상태 다시 확인
gitlab-runner-windows-amd64.exe status
- 만약에 Runner 구동 시에 ObjectNotFound: (git:String) 이라는 메시지가 뜨면 git-bash 를 설치하면된다.
Gitlab-Runner 등록완료
- gitlab-runner : Service is running 라고 나왔으니 다시 GitLab 사이트로 돌아가서 Runner 상태를 확인해보자
- 아래처럼 초록색으로 나왔다면 정상적으로 등록이 완료됐다는 의미이다.
GitLab-Runner 테스트
- 러너가 등록됐다면 실제 테스트를 해보자.
- 러너가 등록된 프로젝트 CI/CD > Editor에 아래 내용을 넣어준다.
stages:
- build
- package
- deploy
build:
stage: build
script:
- echo "build"
- ls
- pwd
only:
- main
tags:
- maven
java-package:
stage: package
script:
- echo "java-package"
needs: ['build']
only:
- main
tags:
- maven
other-package:
stage: package
script:
- echo "nx-package"
needs: ['java-package']
only:
- main
tags:
- maven
clean-deploy:
stage: deploy
script:
- echo "mvn-package"
needs: ['other-package']
only:
- main
tags:
- maven
overwrite-deploy:
stage: deploy
script:
- echo "mvn-package"
needs: ['other-package']
only:
- main
tags:
- maven
- 파이프라인을 실행해 보면 정상 수행되는걸 확인할 수 있다.
728x90
반응형