-
Notifications
You must be signed in to change notification settings - Fork 2
159 lines (141 loc) · 5.1 KB
/
cd.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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
name: Backend CI/CD with Gradle
on:
# workflow_dispatch:
# inputs:
# service:
# description: 'Choose Service to deploy. Default is all.'
# required: true
# default: 'all'
# type: choice
# options:
# - all
# - api-gateway
# - noti-service
# - user-service
# - weather-service
push:
branches:
- prod
jobs:
build:
runs-on: ubuntu-latest
#Checkout : 코드 가져오기
steps:
- name: Checkout
uses: actions/checkout@v3
#Setting JDK
- name: Set up JDK 17
uses: actions/setup-java@v2
with:
java-version: '17'
distribution: 'temurin'
#gradlew chmod
- name: Grant execute permission for gradlew
run: |
chmod +x ./apiGateway-service/gradlew
chmod +x ./config-service/gradlew
chmod +x ./Eureka/gradlew
chmod +x ./noti-service/gradlew
chmod +x ./user-service/gradlew
chmod +x ./weather-service/gradlew
#Setting yml
# - name: Settings for config service
# run: |
# cd ./config-service/src/main/resources
# touch ./bootstrap.yml
# echo "${{ secrets.CONFIG_APPLICATION_YML }}" > ./bootstrap.yml
# cat bootstrap.yml
# DockerHub Login
- name: Docker Hub Login
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
#Config-Service Build & Docker Push
- name: Build with Gradle - config
run: |
cd config-service
./gradlew clean build -x test
docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/waither-config .
docker push ${{ secrets.DOCKERHUB_USERNAME }}/waither-config
env:
CONFIG_GIT_URI: ${{ secrets.CONFIG_GIT_URI }}
CONFIG_PASSPHRASE: ${{ secrets.CONFIG_PASSPHRASE }}
#Config-Service Run
- name: Run config-service
run: |
cd config-service
./gradlew bootRun &
cd ..
#Wait 5 sec
- name: Wait for config-service to start
run: sleep 5
#apiGateway-Service Build & Docker Push
- name: Build with Gradle - apiGateway
run: |
cd apiGateway-service
./gradlew clean build -x test
docker build --no-cache -t ${{ secrets.DOCKERHUB_USERNAME }}/waither-gateway .
docker push ${{ secrets.DOCKERHUB_USERNAME }}/waither-gateway
cd ..
#Eureka Build & Docker Push
- name: Build with Gradle - Eureka
run: |
cd Eureka
./gradlew clean build -x test
docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/waither-eureka .
docker push ${{ secrets.DOCKERHUB_USERNAME }}/waither-eureka
cd ..
#Noti-Service Build & Docker Push
- name: Build with Gradle - noti-service
run: |
cd noti-service
cat src/main/resources/bootstrap.yml
./gradlew clean build -x test
docker build --no-cache -t ${{ secrets.DOCKERHUB_USERNAME }}/waither-noti .
docker push ${{ secrets.DOCKERHUB_USERNAME }}/waither-noti
cd ..
#User-Service Build & Docker Push
- name: Build with Gradle - user-service
run: |
cd user-service
./gradlew clean build -x test
docker build --no-cache -t ${{ secrets.DOCKERHUB_USERNAME }}/waither-user .
docker push ${{ secrets.DOCKERHUB_USERNAME }}/waither-user
cd ..
#Weather-Service Build & Docker Push
- name: Build with Gradle - weather-service
run: |
cd weather-service
./gradlew clean build -x test
docker build --no-cache -t ${{ secrets.DOCKERHUB_USERNAME }}/waither-weather .
docker push ${{ secrets.DOCKERHUB_USERNAME }}/waither-weather
cd ..
deploy:
name : Connect to EC2 and re-run container
needs : build
runs-on : ubuntu-latest
steps:
- name: Deploy to Server
uses: appleboy/[email protected]
env:
SERVICE_NAME: ${{ github.event.inputs.service }}
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
password: ${{ secrets.EC2_PASSWORD }}
port: ${{ secrets.EC2_SSH_PORT }}
timeout: 60s
script: |
export CONFIG_GIT_URI=${{ secrets.CONFIG_GIT_URI }}
export CONFIG_PASSPHRASE=${{ secrets.CONFIG_PASSPHRASE }}
export DOCKERHUB_USERNAME=${{ secrets.DOCKERHUB_USERNAME }}
docker pull ${{ secrets.DOCKERHUB_USERNAME }}/waither-config
docker pull ${{ secrets.DOCKERHUB_USERNAME }}/waither-gateway
docker pull ${{ secrets.DOCKERHUB_USERNAME }}/waither-noti
docker pull ${{ secrets.DOCKERHUB_USERNAME }}/waither-user
docker pull ${{ secrets.DOCKERHUB_USERNAME }}/waither-weather
bash /home/docker_init.sh
bash /home/common.sh
bash /home/deploy.sh
docker image prune -f