40
40
41
41
- name : Image build and push
42
42
run : |
43
- docker build --build-arg PROFILE=test --build-arg DEPENDENCY=build/dependency -t ${{ secrets.DOCKER_REPO_NAME }}/springboot-app:test-latest --platform linux/arm64 .
43
+ docker build --build-arg PROFILE=test --build-arg DEPENDENCY=build/dependency -t ${{ secrets.DOCKER_REPO_NAME }}/springboot-app:test-latest --platform linux/amd64 .
44
44
docker push ${{ secrets.DOCKER_REPO_NAME }}/springboot-app:test-latest
45
45
46
46
- name : Upload docker-compose yaml script to artifact
49
49
name : docker-compose
50
50
path : ${{ github.workspace }}/backend/be_app-docker-compose.yml
51
51
52
- deploy :
52
+ deployA :
53
53
environment : test
54
- runs-on : test-ec2-runner
54
+ runs-on : test-ec2-runner-a
55
55
needs : build
56
56
defaults :
57
57
run :
69
69
70
70
- name : Extract secrets as .be_app-env file
71
71
run : |
72
+ echo $(pwd)
72
73
chmod +x ./deploy.sh
74
+ echo chmod ok
73
75
source ./deploy.sh
74
-
76
+ echo source ok
75
77
echo "BLUE_PORT=$BLUE_PORT" >> $GITHUB_ENV
76
78
echo "GREEN_PORT=$GREEN_PORT" >> $GITHUB_ENV
77
79
@@ -82,11 +84,12 @@ jobs:
82
84
DOCKER_IMAGE_VERSION=test-latest
83
85
84
86
# DB Configuration secrets info from Github Secrets
85
- MASTER_DB_URL=${{ secrets.TEST_SERVER_DB_URL }}
87
+ MYSQL_TIME_ZONE=${{ secrets.MYSQL_TIME_ZONE }}
88
+ DB_BINDING_PORT=${{ secrets.DB_BINDING_PORT }}
89
+ MASTER_DB_URL=${{ secrets.TEST_SERVER_MASTER_DB_URL }}
86
90
MASTER_DB_USERNAME=${{ secrets.TEST_SERVER_DB_USERNAME }}
87
91
MASTER_DB_PASSWORD=${{ secrets.TEST_SERVER_DB_PASSWORD }}
88
-
89
- SLAVE_DB_URL=${{ secrets.TEST_SERVER_DB_URL }}
92
+ SLAVE_DB_URL=${{ secrets.TEST_SERVER_SLAVE_DB_URL }}
90
93
SLAVE_DB_USERNAME=${{ secrets.TEST_SERVER_DB_USERNAME }}
91
94
SLAVE_DB_PASSWORD=${{ secrets.TEST_SERVER_DB_PASSWORD }}
92
95
DDL_AUTO=${{ secrets.DDL_AUTO }}
97
100
CLIENT_REDIRECT_URI=${{ secrets.TEST_CLIENT_REDIRECT_URI }}
98
101
JWT_KEY=${{ secrets.JWT_KEY}}
99
102
100
- # Sticky Synchronize
103
+ # INSTANCE NAME
101
104
INSTANCE_NAME=${{ secrets.INSTANCE_A_NAME }}
102
105
103
106
# Server App
@@ -108,7 +111,7 @@ jobs:
108
111
109
112
- name : remove old spring-app image
110
113
run : |
111
- sudo docker image rm -f coduo2024 /springboot-app:test-latest;
114
+ sudo docker image rm -f ${{ secrets.DOCKER_REPO_NAME }} /springboot-app:test-latest;
112
115
113
116
- name : Start the new (green/blue) environment
114
117
run : |
@@ -125,11 +128,91 @@ jobs:
125
128
- name : Stop and remove the old environment
126
129
run : |
127
130
sudo docker-compose --env-file ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/.be_app-env -f ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/be_app-docker-compose.yml -p $BLUE_PORT down
128
-
131
+
129
132
- name : Delete Dangling docker images
130
133
run : |
131
- sudo docker-compose --env-file ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/.be_app-env -f ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/be_app-docker-compose.yml up -d
134
+ sudo docker image prune -a -f
135
+
136
+ deployB :
137
+ environment : test
138
+ runs-on : test-ec2-runner-b
139
+ needs : build
140
+ defaults :
141
+ run :
142
+ working-directory : ./backend
143
+ steps :
144
+ - name : Set docker-compose YAML script to runner
145
+ uses : actions/download-artifact@v4
146
+ with :
147
+ name : docker-compose
148
+ path : ${{ github.workspace }}/backend
149
+
150
+ - name : Move docker-compose YAML
151
+ run : |
152
+ sudo mv be_app-docker-compose.yml ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/
153
+
154
+ - name : Extract secrets as .be_app-env file
155
+ run : |
156
+ echo $(pwd)
157
+ chmod +x ./deploy.sh
158
+ echo chmod ok
159
+ source ./deploy.sh
160
+ echo source ok
161
+ echo "BLUE_PORT=$BLUE_PORT" >> $GITHUB_ENV
162
+ echo "GREEN_PORT=$GREEN_PORT" >> $GITHUB_ENV
163
+
164
+ cat <<EOF > ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/.be_app-env
165
+
166
+ # Docker Hub info from Github Secrets
167
+ DOCKER_REPO_NAME=${{ secrets.DOCKER_REPO_NAME }}
168
+ DOCKER_IMAGE_VERSION=test-latest
169
+
170
+ # DB Configuration secrets info from Github Secrets
171
+ MYSQL_TIME_ZONE=${{ secrets.MYSQL_TIME_ZONE }}
172
+ DB_BINDING_PORT=${{ secrets.DB_BINDING_PORT }}
173
+ MASTER_DB_URL=${{ secrets.TEST_SERVER_MASTER_DB_URL }}
174
+ MASTER_DB_USERNAME=${{ secrets.TEST_SERVER_DB_USERNAME }}
175
+ MASTER_DB_PASSWORD=${{ secrets.TEST_SERVER_DB_PASSWORD }}
176
+ SLAVE_DB_URL=${{ secrets.TEST_SERVER_SLAVE_DB_URL }}
177
+ SLAVE_DB_USERNAME=${{ secrets.TEST_SERVER_DB_USERNAME }}
178
+ SLAVE_DB_PASSWORD=${{ secrets.TEST_SERVER_DB_PASSWORD }}
179
+ DDL_AUTO=${{ secrets.DDL_AUTO }}
180
+
181
+ # OAUTH & JWT
182
+ CLIENT_ID=${{ secrets.TEST_CLIENT_ID }}
183
+ CLIENT_SECRET=${{ secrets.TEST_CLIENT_SECRET }}
184
+ CLIENT_REDIRECT_URI=${{ secrets.TEST_CLIENT_REDIRECT_URI }}
185
+ JWT_KEY=${{ secrets.JWT_KEY}}
186
+
187
+ # INSTANCE NAME
188
+ INSTANCE_NAME=${{ secrets.INSTANCE_B_NAME }}
189
+
190
+ # Server App
191
+ BLUE_SERVER_BINDING_PORT=${BLUE_PORT}
192
+ GREEN_SERVER_BINDING_PORT=${GREEN_PORT}
193
+ SERVER_LOGS_PATH=${{ secrets.SERVER_LOGS_PATH }}
194
+ EOF
195
+
196
+ - name : remove old spring-app image
197
+ run : |
198
+ sudo docker image rm -f ${{ secrets.DOCKER_REPO_NAME }}/springboot-app:test-latest;
132
199
200
+ - name : Start the new (green/blue) environment
201
+ run : |
202
+ sudo docker-compose --env-file ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/.be_app-env -f ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/be_app-docker-compose.yml -p $GREEN_PORT up -d
203
+
204
+ - name : Wait for new environment to be healthy
205
+ run : |
206
+ until curl -sf http://localhost:${GREEN_PORT}/api/actuator/health | grep "UP"; do sleep 5; done
207
+
208
+ - name : Reload NGINX
209
+ run : |
210
+ sudo systemctl reload nginx
211
+
212
+ - name : Stop and remove the old environment
213
+ run : |
214
+ sudo docker-compose --env-file ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/.be_app-env -f ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/be_app-docker-compose.yml -p $BLUE_PORT down
215
+
133
216
- name : Delete Dangling docker images
134
217
run : |
135
- sudo docker image prune
218
+ sudo docker image prune -a -f
0 commit comments