-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.gitlab-ci.yml
97 lines (94 loc) · 3.57 KB
/
.gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
stages:
- build
- package
- deploy
build: # JOB 이름
# 사용될 이미지 설정
image: gradle:8.5.0-jdk17 # gradle - java 이미지 지정
# stage 설정
stage: build
# 실행될 script 설정
script:
- echo [INFO] YML Settings
- cd ./zooting-api # zooting-api server 위치로 이동
- cd ./src/main/resources # resources 폴더 위치로 이동
- echo "$APPLICATION_YML" > "application.yml" # gitlab APPLICATION_YML을 이용하여 application.yml 파일 생성
- echo "$APPLICATION_DEV_YML" > "application-dev.yml"
- echo "$APPLICATION_LOCAL_YML" > "application-local.yml"
- echo "$APPLICATION_OAUTH_YML" > "application-oauth.yml"
- echo "$APPLICATION_REDIS_YML" > "application-redis.yml"
- echo "$APPLICATION_AWS_YML" > "application-aws.yml"
- ls
- echo [INFO] spring-boot project build
- cd ../../.. # 프로젝트 폴더로 경로 이동
- chmod +x gradlew # gradle 권한 부여
- ./gradlew clean
- ./gradlew bootjar
# - ./gradlew build
# artifacts 설정 (bulld를 통해 생성된 파일을 job artifacts에 보관하여 다음에 수행되는 JOB에서 가져다 활용할 수 있게 도와줌)
artifacts:
# 보관이 이루어질 경로 설정
paths:
- zooting-api/build/libs/zooting-api-0.0.1-SNAPSHOT.jar # Dockerfile에 지정한 경로로 지정
# 유효기간 설정
expire_in: 1 days
# JOB이 수행될 branch 설정 (설정된 branch에 push가 발생될 시 JOB 수행)
only:
- master
- release
- develop
package:
image: docker:latest
stage: package
# service 설정 (설정한 image가 작업이 이루어지는 동안 실행되는 docker 이미지)
services:
- docker:dind
# script가 실행 전 수행 될 script
before_script:
- docker login -u $DOCKER_REGISTRY_USER -p $DOCKER_REGISTRY_PASSWORD # GitLab Container Registry에 로그인
# 실행될 script 설정
script:
- cd ./zooting-api
- echo [INFO] Start package stage
- echo [INFO] SPRING_IMAGE_NAME $SPRING_IMAGE_NAME
- echo [INFO] NGINX_IMAGE_NAME $NGINX_IMAGE_NAME
- echo [INFO] Spring docker project build
- docker build -t $DOCKER_REGISTRY_USER/$SPRING_IMAGE_NAME . # Dockerfile로 build
- docker push $DOCKER_REGISTRY_USER/$SPRING_IMAGE_NAME:latest # Container Registry에 image push
# script가 실행된 후 수행 될 script
after_script:
- docker logout # GitLab Container Registry 로그아웃
# JOB이 수행될 branch 설정 (설정된 branch에 push가 발생될 시 JOB 수행)
only:
- master
- release
- develop
deploy: # JOB 이름
image: docker:latest
# stage 설정
stage: deploy
services:
- docker:dind
# script가 실행 전 수행 될 script
before_script:
- echo [INFO] docker deploy start!
- docker login -u $DOCKER_REGISTRY_USER -p $DOCKER_REGISTRY_PASSWORD # GitLab Container Registry에 로그인
# 실행될 script 설정
script:
- cd ./zooting
- echo "$VUE_ENV" > ".env"
- cat .env
- cd ..
- docker system prune --volumes -f # 사용되지 않는 컨테이너, 이미지 삭제 및 볼륨 정리
- docker-compose down # docker-compose 내리기
- docker-compose pull # docker images pull
- docker-compose up --build -d # docker-compose 빌드 및 백그라운드 실행
# script가 실행된 후 수행 될 script
after_script:
- docker logout # GitLab Container Registry 로그아웃
- echo [INFO] docker deploy end!
# JOB이 수행될 branch 설정 (설정된 branch에 push가 발생될 시 JOB 수행)
only:
- master
- release
- develop