44 lines
1.5 KiB
YAML
44 lines
1.5 KiB
YAML
name: Deploy momo-erp via webhook
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
deploy:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Trigger deploy webhook
|
|
run: |
|
|
set -e
|
|
# 토큰은 .env.production 의 DEPLOY_WEBHOOK_TOKEN 과 일치해야 함
|
|
# secrets 참조 안 하므로 시크릿 등록 불필요
|
|
TOKEN="momo-deploy-2026-secure"
|
|
echo "POST https://momo.junggomoa.com/api/deploy/webhook"
|
|
HTTP_CODE=$(curl -sS -o /tmp/resp.json -w "%{http_code}" -X POST \
|
|
-H "X-Deploy-Token: $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"branch":"main"}' \
|
|
https://momo.junggomoa.com/api/deploy/webhook || echo "000")
|
|
echo "HTTP=$HTTP_CODE"
|
|
cat /tmp/resp.json 2>/dev/null || echo "(no response body)"
|
|
echo ""
|
|
if [ "$HTTP_CODE" != "200" ]; then
|
|
echo "::warning::Webhook 실패: HTTP $HTTP_CODE — 운영 서버에 새 docker-compose.prod.yml 1회 수동 적용 필요"
|
|
fi
|
|
|
|
- name: Wait for deploy + healthcheck
|
|
run: |
|
|
echo "헬스체크 폴링 (최대 5분)..."
|
|
for i in 1 2 3 4 5 6 7 8 9 10; do
|
|
sleep 30
|
|
CODE=$(curl -s -o /dev/null -w "%{http_code}" https://momo.junggomoa.com/ || echo "000")
|
|
echo " ${i}/10: HTTP $CODE"
|
|
if [ "$CODE" = "200" ]; then
|
|
echo "::notice::헬스체크 OK"
|
|
exit 0
|
|
fi
|
|
done
|
|
echo "::warning::5분 안에 200 응답 없음"
|