docs(owner-log): session 6 final deploy record + deploy_server restore script
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
dfb5423198
commit
be82475af8
1
.gitignore
vendored
1
.gitignore
vendored
@ -38,3 +38,4 @@ docs/assets/floorplans/cad/
|
||||
# graphify / screenshot generated outputs (local only)
|
||||
graphify-out/
|
||||
screenshot/
|
||||
.claude/settings.local.json
|
||||
|
||||
49
deploy/restore_kintex_block.sh
Normal file
49
deploy/restore_kintex_block.sh
Normal file
@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env bash
|
||||
# deploy_server.py kintex 블록 복원 원샷 (소유자 승인 2026-07-24)
|
||||
# 실행: bash deploy/restore_kintex_block.sh
|
||||
# 동작: 서버 내부에서 백업 → repo 정본 블록 추출 → 앵커 앞 삽입 → py_compile → 서비스 재시작 → 실패 시 롤백
|
||||
set -euo pipefail
|
||||
KEY="$HOME/.ssh/guardia_server"
|
||||
ssh -i "$KEY" -o IdentitiesOnly=yes -o BatchMode=yes root@101.79.17.164 python3 - <<'PYEOF'
|
||||
import re, subprocess, shutil, sys, py_compile
|
||||
|
||||
TARGET = "/opt/zioinfo/deploy_server.py"
|
||||
BLOCK_SRC = "/opt/kintex/src/deploy/deploy_server_kintex_block.py"
|
||||
BACKUP = TARGET + ".bak_kintexfix"
|
||||
ANCHOR = 'logging.info(f"=== {repo} 배포 완료 ===")'
|
||||
|
||||
body = open(TARGET, encoding="utf-8").read()
|
||||
if 'elif repo == "kintex"' in body:
|
||||
print("SKIP: kintex 블록이 이미 존재"); sys.exit(0)
|
||||
|
||||
raw = open(BLOCK_SRC, encoding="utf-8").read()
|
||||
m = re.search(r"'''\n(.*?)'''", raw, re.S)
|
||||
if not m:
|
||||
print("FAIL: 블록 추출 실패"); sys.exit(1)
|
||||
block = m.group(1)
|
||||
|
||||
if ANCHOR not in body:
|
||||
print("FAIL: 앵커 미발견"); sys.exit(1)
|
||||
|
||||
shutil.copy2(TARGET, BACKUP)
|
||||
idx = body.index(ANCHOR)
|
||||
line_start = body.rfind("\n", 0, idx) + 1
|
||||
indent = body[line_start:idx]
|
||||
new_body = body[:line_start] + block + indent + ANCHOR + body[idx + len(ANCHOR):]
|
||||
open(TARGET, "w", encoding="utf-8").write(new_body)
|
||||
|
||||
try:
|
||||
py_compile.compile(TARGET, doraise=True)
|
||||
except Exception as e:
|
||||
shutil.copy2(BACKUP, TARGET)
|
||||
print(f"FAIL: py_compile 실패 → 백업 롤백 완료: {e}"); sys.exit(1)
|
||||
|
||||
r = subprocess.run(["systemctl", "restart", "zioinfo-deploy"])
|
||||
if r.returncode != 0:
|
||||
shutil.copy2(BACKUP, TARGET)
|
||||
subprocess.run(["systemctl", "restart", "zioinfo-deploy"])
|
||||
print("FAIL: 재시작 실패 → 백업 롤백 후 재기동"); sys.exit(1)
|
||||
|
||||
act = subprocess.run(["systemctl", "is-active", "zioinfo-deploy"], capture_output=True, text=True)
|
||||
print(f"OK: kintex 블록 삽입 + py_compile 통과 + zioinfo-deploy {act.stdout.strip()}")
|
||||
PYEOF
|
||||
@ -408,3 +408,5 @@ K2(H6~H10) 트렌치 실측 완료 — 65채널·941포인트(H6 9채널·H7/H8/
|
||||
**추가 지시(2026-07-23):** "개발은 헤르메스 에이전트 사용" — 배포/전달 단계(commit·push→CI/CD→배포 검증→릴리즈 노트→알림)는 zioinfo:hermes(전령) 에이전트 경유로 수행.
|
||||
|
||||
**세션 6 결과(2026-07-24):** 시연 15항목·공개사이트 7항목·백로그 웨이브 전체 구현 완료(상세: UNDEVELOPED_BACKLOG 결과표·_workspace/impl_* 요약 12종). 로고 CI_01 확정·전수 통일(웹 BrandLogo 규격 header28/auth32/footer22/print38·모바일 로그인/스플래시). 게이트: 백엔드 전체 테스트·프론트 tsc/build·i18n 4로케일 대조 0 누락·마이그레이션 V68~V106 중복 0. 잔여: 커스텀 그리드 22 PDF 배선(마감 중)→통합 게이트→헤르메스 push/배포→모바일 v0.2.2 빌드·QR.
|
||||
|
||||
**배포 최종(2026-07-24):** push 2328418(6그룹) → ★deploy_server.py kintex 블록 유실 발견(7/22 타 프로젝트 작업 회귀, webhook 10ms no-op) → deploy_kintex.sh 수동 배포로 릴리즈 완료(Flyway V68~V106 클린 적용, dev/운영 health UP, 신규 API 200) → 소유자 승인으로 블록 복원(deploy/restore_kintex_block.sh, py_compile·재시작) → **webhook E2E 통과(dfb5423 자동배포·health 200) — 자동배포 체인 정상화**. 모바일 v0.2.2(versionCode 4) EAS 빌드→APK 교체→매니페스트 갱신, 개발·운영 다운로드 200·크기 일치. 교훈: 공유 인프라(deploy_server.py) 수정은 권한 게이트 — 승인 스크립트(deploy/restore_kintex_block.sh) + settings.local.json 허용 규칙 경로 확립.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user