Skip to content

Commit 20f07ab

Browse files
committed
fix : test-server CI 워크플로우에서 CD 부분 제거
1 parent 19dcc19 commit 20f07ab

File tree

1 file changed

+0
-141
lines changed

1 file changed

+0
-141
lines changed

.github/workflows/test-server-ci.yml

Lines changed: 0 additions & 141 deletions
Original file line numberDiff line numberDiff line change
@@ -106,144 +106,3 @@ jobs:
106106
docker push $IMAGE_NAME:${GITHUB_SHA}
107107
docker push $IMAGE_NAME:latest
108108
109-
# ==================================
110-
# CD: Deploy to Test Environment
111-
# ==================================
112-
cd-test:
113-
runs-on: ubuntu-latest
114-
needs: ci # CI가 성공한 후에만 실행
115-
116-
steps:
117-
- name: Checkout code
118-
uses: actions/checkout@v4
119-
120-
- name: Deploy to Test Environment
121-
uses: appleboy/[email protected]
122-
with:
123-
host: ${{ secrets.TEST_SERVER_HOST }}
124-
username: ec2-user
125-
key: ${{ secrets.SSH_PRIVATE_KEY }}
126-
script: |
127-
128-
# GHCR 로그인 (EC2)
129-
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u "${{github.repository_owner}}" --password-stdin
130-
131-
# 최신 이미지 pull
132-
docker pull ghcr.io/${{ github.repository }}/zoopzoop:latest
133-
134-
# NPM API 설정
135-
NPM_HOST="localhost:81"
136-
NPM_EMAIL="${{secrets.NPM_ADMIN_EMAIL}}"
137-
NPM_PASSWORD="${{secrets.NPM_ADMIN_PASSWORD}}"
138-
PROXY_HOST_ID="${{secrets.NPM_PROXY_HOST_ID}}"
139-
140-
# NPM API 토큰 가져오기
141-
echo "Getting NPM API token..."
142-
TOKEN=$(curl -s -X POST "http://${NPM_HOST}/api/tokens" \
143-
-H "Content-Type: application/json" \
144-
-d "{\"identity\":\"${NPM_EMAIL}\",\"secret\":\"${NPM_PASSWORD}\"}" | \
145-
jq -r '.token')
146-
if [ "$TOKEN" == "null" ] || [ -z "$TOKEN" ]; then
147-
echo "❌ Failed to get NPM API token"
148-
exit 1
149-
fi
150-
151-
# 현재 NPM Proxy Host 설정 확인
152-
echo "📋 Checking current NPM configuration..."
153-
CURRENT_CONFIG=$(curl -s -H "Authorization: Bearer $TOKEN" \
154-
"http://${NPM_HOST}/api/nginx/proxy-hosts/${PROXY_HOST_ID}")
155-
156-
CURRENT_TARGET=$(echo $CURRENT_CONFIG | jq -r '.[0].forward_host // .forward_host')
157-
CURRENT_PORT=$(echo $CURRENT_CONFIG | jq -r '.[0].forward_port // .forward_port')
158-
159-
echo "Current NPM target: $CURRENT_TARGET:$CURRENT_PORT"
160-
161-
# Blue-Green 배포
162-
if [ "$(docker ps -q -f name=zoopzoop-blue)" ]; then
163-
NEW_CONTAINER=zoopzoop-green
164-
OLD_CONTAINER=zoopzoop-blue
165-
NEW_PORT=8082
166-
else
167-
NEW_CONTAINER=zoopzoop-blue
168-
OLD_CONTAINER=zoopzoop-green
169-
NEW_PORT=8081
170-
fi
171-
172-
echo "Starting new container: $NEW_CONTAINER on port $NEW_PORT"
173-
docker run -d --restart unless-stopped \
174-
-p $NEW_PORT:8080 \
175-
--name $NEW_CONTAINER \
176-
--network common \
177-
-e SPRING_DATASOURCE_URL="${{secrets.TEST_DB_URL}}" \
178-
-e SPRING_DATASOURCE_USERNAME="${{secrets.TEST_DB_USERNAME}}" \
179-
-e SPRING_DATASOURCE_PASSWORD="${{secrets.TEST_DB_PASSWORD}}" \
180-
ghcr.io/${{ github.repository }}/zoopzoop:latest
181-
182-
183-
# 헬스체크 (Spring Boot Actuator)
184-
for i in {1..30}; do
185-
if curl -s http://localhost:$NEW_PORT/actuator/health | grep -q '"status":"UP"'; then
186-
echo "✅New container is healthy!"
187-
break
188-
else
189-
echo "Waiting for new container to be healthy..."
190-
sleep 5
191-
fi
192-
193-
if [ $i -eq 30 ]; then
194-
echo "❌ Health check failed. Rolling back..."
195-
docker stop $NEW_CONTAINER || true
196-
docker rm $NEW_CONTAINER || true
197-
exit 1
198-
fi
199-
done
200-
201-
# NPM에서 트래픽 스위칭
202-
echo "🔄 Switching traffic in Nginx Proxy Manager..."
203-
DOMAIN_NAME=$(echo $CURRENT_CONFIG | jq -r '.domain_names[0]')
204-
CERT_ID=$(echo "$CURRENT_CONFIG" | jq -r '.certificate_id')
205-
206-
SWITCH_RESPONSE=$(curl -s -w "%{http_code}" -X PUT "http://${NPM_HOST}/api/nginx/proxy-hosts/${PROXY_HOST_ID}" \
207-
-H "Authorization: Bearer $TOKEN" \
208-
-H "Content-Type: application/json" \
209-
-d "{
210-
\"domain_names\": [\"$DOMAIN_NAME\"],
211-
\"forward_scheme\": \"http\",
212-
\"forward_host\": \"$NEW_CONTAINER\",
213-
\"forward_port\": 8080,
214-
\"caching_enabled\": false,
215-
\"block_exploits\": true,
216-
\"advanced_config\": \"\",
217-
\"locations\": [],
218-
\"certificate_id\": $CERT_ID,
219-
\"ssl_forced\": 1,
220-
\"hsts_enabled\": 1,
221-
\"hsts_subdomains\": 1
222-
}")
223-
224-
HTTP_CODE=${SWITCH_RESPONSE: -3}
225-
if [ "$HTTP_CODE" -eq 200 ] || [ "$HTTP_CODE" -eq 201 ]; then
226-
echo "✅ Traffic switching completed successfully!"
227-
echo "🎯 NPM now points to: $NEW_CONTAINER:8080"
228-
229-
# 최종 확인
230-
sleep 5
231-
echo "🔍 Final verification..."
232-
VERIFY_CONFIG=$(curl -s -H "Authorization: Bearer $TOKEN" \
233-
"http://${NPM_HOST}/api/nginx/proxy-hosts/${PROXY_HOST_ID}")
234-
VERIFY_TARGET=$(echo $VERIFY_CONFIG | jq -r '.forward_host')
235-
echo "✅ Verified NPM target: $VERIFY_TARGET"
236-
237-
else
238-
echo "❌ Traffic switching failed! HTTP Code: $HTTP_CODE"
239-
echo "Response: ${SWITCH_RESPONSE%???}"
240-
echo "🔄 Rolling back new container..."
241-
docker stop $NEW_CONTAINER || true
242-
docker rm $NEW_CONTAINER || true
243-
exit 1
244-
fi
245-
246-
# 이전 컨테이너 종료 및 제거
247-
echo "Stopping old container: $OLD_CONTAINER"
248-
docker stop $OLD_CONTAINER || true
249-
docker rm $OLD_CONTAINER || true

0 commit comments

Comments
 (0)