반응형
목표
GitLab에서 CI/CD를 하는 것
개발 환경
HOST
- Mac OS X
SERVER
- Ubuntu 20.04 LTS
- GitLab Version : v14.5.0
- Docker version 20.10.17, build 100c701
Gitlab Runner 설치
<aside> 💡 Gitlab 버전과 Gitlab-Runner의 버전을 꼭 일치시켜주세요!
</aside>
Docker로 설치하기
docker run -d --name gitlab-runner-v14.5.0 \\
--restart always \\
--volume /srv/gitlab-runner/config:/etc/gitlab-runner: \\
--volume /var/run/docker.sock:/var/run/docker.sock \\
gitlab/gitlab-runner:v14.5.0
docker-compose (잘안됨)
#docker-compose.gitlab 파일 작성
sudo vi /opt/gopath/src/gitlab/docker-compose.gitlab.runner.yml
gitlab-runner:
container_name: gitlab-runner
image: 'gitlab/gitlab-runner:v14.5.0'
restart: always
volumes:
- '/srv/gitlab-runner/config:/etc/gitlab-runner'
- '/var/run/docker.sock:/var/run/docker.sock'
#docker-compose로 컨테이너 실행
docker-compose -f /opt/gopath/src/gitlab/docker-compose.gitlab.runner.yml up -d
GitLab-runner 연동하기
Gitlab project Settings -> CI/CD -> Runners
도커 접속
$ docker container exec -it gitlab-runner bash
shell이용해서 scp를 한다면 executor를 shell로 설정해준다.
Runner 등록
두 가지 방법이 존재한다.
1. 비대화식 등록
gitlab-runner register -n \
--url http://<IP> \
--registration-token <TOKEN> \
--description gitlab-runner \
--executor docker \
--docker-image docker:latest \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock
옵션 설명
--url | GitLab 인스턴스 URL |
--registration-token | Project 의 token |
--description | 설명 |
--executor | 빌드를 실행하는 데 사용할 수 있는 여러 실행 프로그램 |
--docker-image | Docker를 실행 프로그램으로 선택한 경우 사용할 이미지 |
--docker-volumes | Docker를 실행 프로그램으로 선택한 경우 사용할 볼륨 |
2. 대화식 등록
gitlab-runner register
# URL
# TOKEN
# runner 이름
# 특정 Tag로 커밋시 동작
# 실행프로그램
root@207d1b9b0beb:/# gitlab-runner register
Runtime platform arch=amd64 os=linux pid=30 revision=f0a95a76 version=14.5.0
Running in system-mode.
Enter the GitLab instance URL (for example, https://gitlab.com/):
https://gitlab.example.com/
Enter the registration token:
katSLz2sjkHZ21nkazYs-_6cb
Enter a description for the runner:
[207d1b9b0beb]: gitlab-runner-140
Enter tags for the runner (comma-separated):
deploy
Registering runner... succeeded runner=ktSLz2jk
Enter an executor: parallels, kubernetes, custom, docker, ssh, virtualbox, docker+machine, docker-ssh+machine, docker-ssh, shell:
docker
Enter the default Docker image (for example, ruby:2.6):
openjdk:11.0-jdk-oracle
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
3. 등록 확인
초록불이 들어오면 정상적으로 된것이다!
.gitlab-ci.yml 작성
stages: # List of stages for jobs, and their order of execution
- build
- deploy
image: openjdk:11-oracle
cache:
paths:
- .gradle/wrapper
- .gradle/caches
build-job: # This job runs in the build stage, which runs first.
stage: build
before_script:
- chmod +x ./gradlew
script:
- echo "build start.."
- ./gradlew build
deploy-job: # This job runs in the deploy stage.
stage: deploy # It only runs when *both* jobs in the test stage complete successfully.
before_script:
- apt update
- apt install openssh-client -y
script:
- echo "Deploying application..."
- sshpass -p "$DEPLOY_PASSWORD" scp ./build/libs/*.jar "$USER"@"$DEPLOY_IP":~/BUILD_JAR/test.jar
- echo "success deploy!"
main으로 커밋
main 브랜치로 커밋 시 정상적으로 CI/CD가 실행되는 것을 볼 수 있다.
왼쪽 탭 CI/CD → Pipelines에 보면 pass가 된것을 확인할 수 있다!
TroubleShooting
HTTP Basic Authenticated : Access Denied 뜰 때, 깃랩 버전과 Gitlab-runner의 버전을 체크하자.
💡 현재 사용중인 Gitlab 버전과 같은 Gitlab-runner를 사용해야 한다.
This job is stuck because the project doesn't have any runners online assigned to it. even though i have added runner and it is alive
runner 설정에서 untaged jobs 체크를 해준다.
REFERENCES
GitLab Runner 를 사용하여 GitLab CI 구성하기
GitLab-CI Runner가 동작하지 않을 때 해봐야 할 것들
How to check the version of GitLab?
반응형