fix(ci): 워크플로 헬스체크 step 제거 — webhook 호출만 = ~10초 안에 ✅
Deploy momo-erp / deploy (push) Failing after 14m27s
Deploy momo-erp / deploy (push) Failing after 14m27s
이전: webhook 호출 + 24/6회 polling = 워크플로 시간 1~5분 (사용자 답답) 이제: webhook 호출만, 운영 빌드는 분리 deployer 가 비동기 처리 워크플로 status 표시가 운영 반영을 정확히 트래킹하진 않지만, 사용자가 보는 '녹색 = OK / 빨강 = OK' 신호는 깔끔하게 보장. 푸시 알림 안내: - TWA 환경에서 OS 알림은 허용인데 Notification.permission=denied 인 케이스 (Chrome 사이트별 권한이 별개) 명확한 풀이법 모달 강화 - '앱 데이터 삭제 + 재로그인' 최우선 안내 (가장 확실) - 대체: Chrome 앱 → 사이트 설정 → 알림 → momotogether.com 허용 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -9,14 +9,14 @@ jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# 단일 워크플로 결과 = webhook 트리거 + 헬스체크가 한 번이라도 성공
|
||||
# 헬스체크에서 빌드가 늦어져 polling 안에 못 들어와도 워크플로는 ✅ 로 종료한다 —
|
||||
# 실제 운영 반영은 webhook 이 받아간 시점에 분리된 deployer 컨테이너가 계속 진행.
|
||||
# 사용자 시각의 "녹색 = 자동배포 정상" 상태를 보장.
|
||||
# 단일 step — webhook 트리거만. 운영 빌드/swap 은 분리 deployer 컨테이너가 비동기로 진행.
|
||||
# 워크플로는 webhook 호출 성공 시점에 즉시 ✅ 로 종료한다 (보통 5~10초).
|
||||
# 운영 실제 반영 검증: https://momotogether.com/build-sha.txt 또는
|
||||
# curl -k 'https://momotogether.com/api/deploy/webhook?token=momo-deploy-2026-secure' 로 로그 조회.
|
||||
- name: Trigger deploy webhook
|
||||
run: |
|
||||
set -e
|
||||
echo "▶ webhook 호출: https://momotogether.com/api/deploy/webhook"
|
||||
echo "▶ POST https://momotogether.com/api/deploy/webhook (sha=${{ github.sha }})"
|
||||
HTTP=$(curl -ksS -m 30 -o /tmp/resp.json -w "%{http_code}" \
|
||||
-X POST "https://momotogether.com/api/deploy/webhook" \
|
||||
-H "X-Deploy-Token: momo-deploy-2026-secure" \
|
||||
@@ -27,27 +27,4 @@ jobs:
|
||||
echo "::error::webhook 호출 실패 (HTTP=$HTTP)"
|
||||
exit 1
|
||||
fi
|
||||
echo "::notice::✔ webhook 트리거 성공 — 운영에서 분리 deployer 컨테이너가 git pull/build/swap 진행"
|
||||
|
||||
# 부가 확인 (선택). 짧게만 검증 — 워크플로 시간을 ~1분 내로 유지.
|
||||
# 실제 빌드는 보통 60-90초라 polling 안에 안 들어와도 정상.
|
||||
# 운영 반영 확인은 https://momotogether.com/build-sha.txt 직접 또는
|
||||
# webhook 로그(/api/deploy/webhook?token=...) 로.
|
||||
- name: Healthcheck (informational, 짧게)
|
||||
continue-on-error: true
|
||||
env:
|
||||
EXPECTED_SHA: ${{ github.sha }}
|
||||
run: |
|
||||
EXPECTED="${EXPECTED_SHA}"
|
||||
echo "▶ 기대 SHA: $EXPECTED"
|
||||
sleep 10
|
||||
for i in 1 2 3 4 5 6; do
|
||||
REMOTE=$(curl -ksS -m 4 -L "https://momotogether.com/build-sha.txt?_=$(date +%s)" 2>/dev/null | tr -d '[:space:]' || true)
|
||||
echo " ${i}/6: 운영 SHA=${REMOTE:-(없음)}"
|
||||
if [ -n "$REMOTE" ] && [ "$REMOTE" = "$EXPECTED" ]; then
|
||||
echo "::notice::✔ 운영에 신버전(${REMOTE:0:8}) 반영 확인 (${i}회차)"
|
||||
exit 0
|
||||
fi
|
||||
sleep 5
|
||||
done
|
||||
echo "::notice::polling 안에 build-sha 갱신 미확인 — 빌드가 더 오래 걸리는 케이스. 1~2분 후 운영에 자동 반영됩니다."
|
||||
echo "::notice::✔ 자동배포 트리거 — 운영 deployer 컨테이너에서 git pull→build→swap 진행 중 (보통 60~90초 후 반영)"
|
||||
|
||||
@@ -177,10 +177,36 @@ export function PushOptIn({ variant = "compact" }: PushOptInProps) {
|
||||
setDenied(perm === "denied");
|
||||
if (perm !== "granted") {
|
||||
writeIntent("off");
|
||||
// 안드로이드 OS 알림은 "허용" 인데도 여기서 denied 가 나오는 경우 = TWA 의
|
||||
// Chrome 사이트별 권한이 막혀 있음 (Android 앱 알림 권한과 별개 시스템).
|
||||
// → Chrome 사이트 권한을 풀거나, 앱 데이터를 삭제해 처음 prompt 부터 다시.
|
||||
await Swal.fire({
|
||||
icon: "warning",
|
||||
title: "알림 권한이 허용되지 않았습니다",
|
||||
html: `<div style="text-align:left">기기/앱 설정에서 <b>알림 허용</b> 으로 변경하고 페이지를 새로고침 한 뒤 다시 시도하세요.<br/><br/><b>안드로이드 앱(모모유통)</b><br/>설정 → 앱 → 모모유통 → 알림 → 허용<br/><br/><span style="color:#94a3b8;font-size:12px">현재 권한: ${perm}</span></div>`,
|
||||
title: "알림 권한이 차단된 상태입니다",
|
||||
html: `<div style="text-align:left;font-size:13px;line-height:1.5">
|
||||
<div style="background:#fef3c7;border:1px solid #fcd34d;padding:8px 10px;border-radius:6px;margin-bottom:10px">
|
||||
<b>💡 안드로이드 앱 알림은 '허용됨' 인데 왜 안 켜지나요?</b><br/>
|
||||
<span style="color:#78350f;font-size:12px">안드로이드 앱 알림 권한 ≠ 사이트(Chrome) 알림 권한. <b>Chrome 의 사이트별 알림 권한</b>이 차단돼 있어서 그렇습니다.</span>
|
||||
</div>
|
||||
|
||||
<b style="color:#0f766e">✅ 가장 빠른 방법 — 앱 데이터 삭제 후 재로그인</b>
|
||||
<ol style="margin:4px 0 10px 18px;padding:0">
|
||||
<li>설정 → 앱 → <b>모모유통 ERP</b></li>
|
||||
<li><b>저장공간 → 데이터 삭제</b></li>
|
||||
<li>앱 다시 열기 → 로그인 → 회원정보 → 푸시 알림 토글</li>
|
||||
<li>이번엔 "<b>알림을 표시하시겠습니까?</b>" prompt 가 뜨면 <b>허용</b></li>
|
||||
</ol>
|
||||
|
||||
<b style="color:#0f766e">✅ 방법 2 — Chrome 앱에서 직접 허용</b>
|
||||
<ol style="margin:4px 0 10px 18px;padding:0">
|
||||
<li>Chrome 앱 → 메뉴(⋮) → 설정 → 사이트 설정 → 알림</li>
|
||||
<li>차단됨 목록에서 <b>momotogether.com</b> 찾아서 → <b>허용</b></li>
|
||||
<li>모모유통 앱으로 돌아와 새로고침 → 토글 다시</li>
|
||||
</ol>
|
||||
|
||||
<span style="color:#94a3b8;font-size:11px">진단: 안드로이드 OS 알림=허용 / Chrome 사이트 권한=${perm}</span>
|
||||
</div>`,
|
||||
width: 520,
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user