sudo su
sudo apt update
sudo apt upgrade
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
sudo apt install gitlab-runner





gitlab-runner register --url https://lab.ssafy.com --token glrt-nBKoNTTTK_DiBMqbnE-o
glrt-nBKoNTTTK_DiBMqbnE-o
sam
# lab.ssafy.com 설정 안하면 연결안됨 주의
https://lab.ssafy.com
Gitlab Token 입력
Gitlab-Runner 이름(Tag) 입력
sample2
docker
docker:20.0.7


# docker와 gitlab-runner를 그룹으로 묶음
sudo usermod -aG docker gitlab-runner
# CI 설정 파일 수정
vi /etc/gitlab-runner/config.toml

# stage
stages:
- build
- package
- deploy
build:
image: gradle:8.4.0-jdk17 # 자바 17 gradle의 이미지를 사용한다
stage: build
script:
- echo [INFO] YML Settings
- cd ./src/main/resources # src 디렉토리로 이동
- echo "$APPLICATION_YML" > "application.yml" # gitlab cicd에 미리 설정해둔 APPLICATION_YML로 application.yml 생성
- echo [INFO] spring-boot project build
- cd ../../..
- chmod +x gradlew
- ./gradlew clean
- ./gradlew bootjar # 스프링 부트 빌드
artifacts:
paths:
- build/libs/*.jar # 빌드파일 저장위치
expire_in: 1 days
only:
- master
package:
image: docker:latest # 도커 이미지 사용
stage: package
services:
- docker:dind
before_script:
- docker login -u $DOCKER_REGISTRY_USER -p $DOCKER_REGISTRY_PASSWORD # 도커 허브 로그인
script:
- echo [INFO] Start package stage
- echo [INFO] CI_REGISTRY_USER $CI_REGISTRY_USER
- echo [INFO] CI_REGISTRY_IMAGE $CI_REGISTRY_IMAGE
- echo [INFO] SPRING_IMAGE_NAME $SPRING_IMAGE_NAME
- echo [INFO] NGINX_IMAGE_NAME $NGINX_IMAGE_NAME
- echo [INFO] DOCKER_REGISTRY_USER $DOCKER_REGISTRY_USER
- echo [INFO] DOCKER_REGISTRY_PWD $DOCKER_REGISTRY_PASSWORD
- echo [INFO] Spring docker project build
- docker build -t $DOCKER_REGISTRY_USER/$SPRING_IMAGE_NAME . # 도커 파일로 스프링 부트 빌드해 이미지 생성
- docker push $DOCKER_REGISTRY_USER/$SPRING_IMAGE_NAME:latest # 도커 허브에 빌드한 이미지 푸쉬
- echo [INFO] Nginx docker build
- cd nginx
- docker build -t $DOCKER_REGISTRY_USER/$NGINX_IMAGE_NAME . # 도커 파일로 nginx 빌드해 이미지 생성
- docker push $DOCKER_REGISTRY_USER/$NGINX_IMAGE_NAME:latest # 도커 허브에 빌드한 이미지 $DOCKER_REGISTRY_USER/$NGINX_IMAGE_NAME:latest로 푸쉬
after_script:
- docker logout
only:
- master
deploy:
image: docker:latest
stage: deploy
services:
- docker:dind
before_script:
- echo [INFO] docker deploy start!
- docker login $CI_REGISTRY -u $DOCKER_REGISTRY_USER -p $DOCKER_REGISTRY_PASSWORD
script:
- docker volume prune -f # 사용하지 않는 볼륨 정리
- docker-compose down # 실행중인 컨테이너 종료
- docker-compose pull # 도커허브에서 이미지 받아오기
- docker-compose build # 컴포즈 내용으로 컨테이너 생성
- docker-compose up -d # 컨테이너 백그라운드 실행
after_script:
- docker logout
- echo [INFO] docker deploy end!
only:
- master