Files
wehub-resource-sync 3e779be6f3
CI / lint (push) Failing after 13m4s
CI / test (3.11, ubuntu-latest) (push) Failing after 2m4s
CI / test (3.13, ubuntu-latest) (push) Successful in 13m30s
CI / test (3.14, ubuntu-latest) (push) Successful in 17m21s
CI / test (3.12, ubuntu-latest) (push) Successful in 17m55s
CI / discover-apps-ps (push) Successful in 1m56s
CI / test (3.9, ubuntu-latest) (push) Successful in 13m17s
CI / test (3.10, ubuntu-latest) (push) Successful in 26m21s
CI / audit (push) Successful in 13m38s
Deploy site / deploy (push) Has been cancelled
CI / test (3.14, ubuntu-24.04-arm) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:32:37 +08:00

5.6 KiB

릴리즈 테스트 체크리스트

English | 한국어

자동 테스트가 못 보는 회귀를 릴리즈에 실어 보내지 않기 위한 반복 가능한 점검. winpodx 버그 대부분은 게스트측 — Windows VM, FreeRDP/RAIL, OEM 스크립트, 설치 흐름 — 인데 Linux CI 러너의 pytest로는 이걸 실행할 수 없습니다. 이 체크리스트는 그 수동·실윈도우 부분을 기억에 의존하지 않고 명시화합니다.

핵심 규칙: 게스트를 건드리는 변경(config/oem/, scripts/windows/, reverse-open shim, compose 포트/QEMU args, 에이전트, install.bat, discovery, RAIL 실행)은 머지 전 실제 Windows 게스트로 스모크 필수pytest만으론 부족. CI를 통과하고 실윈도우 스모크 없이 머지돼 깨진 릴리즈가 여러 번 있었습니다(media_monitor #613/#638, 4445/USER_PORTS 포트 버그 #616).

언제 돌리나

  • 태그 전 — 기능 체크리스트 해당 섹션 + 최소 1회 fresh 설치 스모크.
  • 게스트측 변경 후, 머지 전 — 건드린 표면의 게스트측 스모크 (CI가 못 잡는 걸 잡는 게이트).
  • install.sh / compose / OEM 변경 후 — 깨끗한 머신의 설치 + 기존 머신 위 업그레이드 둘 다.

1. 자동 게이트 (CI — green 필수)

모든 PR에서 돌아감; floor이지 전부가 아님.

  • lintruff check + ruff format --check
  • test (3.9 … 3.14) — 지원 Python 전체 pytest tests/ -v
  • auditpip-audit
  • discover-apps-ps — PowerShell discovery 스크립트 문법
  • verify_versionspyproject.tomlpackaging/rpm/winpodx.spec ↔ 설치 메타데이터 일치

로컬 pre-push (CI lint와 동일, 전체 트리 — per-file 아님): ruff check src/ tests/ && ruff format --check src/ tests/ && pytest tests/ -q

2. 게스트측 스모크 (실윈도우 — CI 불가)

실제 설치본에서. 각 단계 후 winpodx doctor가 빠른 헬스 게이트.

설치 / 업데이트

  • Fresh 설치 완주: curl … install.sh | bash -s -- --mainProvisioning complete ([3/4]/[4/4] hang 없음, Invalid port 없음, 에이전트 up).
  • 기존 위 업데이트 (--main 재실행): compose 재생성, 멈춘 pod recreate+기동, apply-fixes 실행(guest_share: ok 등) — Skipping 없음.
  • --ref <branch> 가 브랜치 최신 커밋 설치(git -C ~/.local/bin/winpodx-app log -1로 실제 갱신 확인 — 재실행이 업데이트했다고 가정 금지).
  • apply_fixes: N/N fixes OK(현재 7) + discovery: N apps + reverse_open: ok.

앱 / RDP / RAIL

  • winpodx app run desktop — 풀 데스크탑 렌더.
  • winpodx app run <app> — RAIL 창 표시(자체 창, 작업표시줄 항목), 로그온/잠금화면 아님, Invalid appWindow 깨짐 없음.
  • winpodx app refresh/exec timed out 없이 완료(느린/콜드 게스트 포함).
  • 다중 앱 창 / 멀티세션(rdprrap) 동작.

Reverse-open (#616) — KDE 호스트

  • \\tsclient\home 아래 호스트 파일 → 연결 프로그램 Linux 앱 → 열림.
  • 게스트-로컬 파일(Windows 데스크탑 C:\Users\…) → 연결 프로그램 Linux 앱 → 호스트에서 열림, 편집 저장됨. (kio-fuse 필요; winpodx doctorguest_mount.)

대시보드 / GUI / 트레이

  • 대시보드 Pod / CPU / RAM / Disk 게이지 전부 숫자 표시(n/a 아님).
  • Settings → UI Language 인터페이스 전환; Idle Action(Pause/Stop) 존재.
  • 트레이 아이콘 표시; 서브메뉴(세션 / USB) KDE Plasma에서 열림.

전원 / idle / 장치 / 위장 / debloat

  • Idle Pause(기본) suspend + 실행 시 자동 resume.
  • Idle Stop(pod.idle_action=stop) pod 정지(RAM 해제); 다음 실행 콜드 부팅.
  • winpodx device USB attach/detach(live hot-plug).
  • 위장(pod.disguise_level balanced|max) 부팅 + RDP 렌더(#557 블랙스크린 없음).
  • winpodx debloat + undo가 활성화/업데이트 안 깨고 실행.
  • winpodx rotate-password 호스트 config ↔ 게스트 계정 동기 유지.

3. 플랫폼 / 채널 매트릭스

분기하는 표면을 spot-check; 매 릴리즈 전수는 불필요하되 주기적으로 돌아가며 커버.

커버
설치 채널 pip/curl · AppImage · AUR · RPM(Fedora/openSUSE/AlmaLinux) · .deb(Debian/Ubuntu)
데스크탑 KDE Plasma · GNOME (주의: reverse-open 게스트-디스크는 KDE/kio-fuse 전용)
디스플레이 Wayland(XWayland RAIL) · X11
백엔드 Podman(기본) · Docker

4. 릴리즈 sign-off

  • pyproject.toml + packaging/rpm/winpodx.spec + debian/changelog 버전 범프 (python scripts/ci/verify_versions.py → consistent).
  • CHANGELOG.md docs/CHANGELOG.ko.md: [X.Y.Z] - <날짜> + ### Contributors 섹션(모든 외부 리포터/기여자 감사 — gh issue view <N> 작성자, maintainer 제외).
  • README.md + docs/README.ko.md "active development" 줄 + 요약 갱신.
  • 릴리즈 커밋 CI green.
  • 양쪽 태그 push: vX.Y.Z(publish 워크플로: OBS / RHEL / deb / AUR / AppImage) REL-vX.Y.Z(Release 워크플로 → CHANGELOG 섹션에서 GitHub 릴리즈 본문 생성).
  • GitHub 릴리즈 게시 — Contributors 섹션 + 전체 자산(wheel, sdist, AppImage, RPM, deb).
  • 수정된 이슈에 "shipped in vX.Y.Z" 코멘트; 리포터 미해결 질문 없는 건 닫기.