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
5.6 KiB
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이지 전부가 아님.
lint—ruff check+ruff format --checktest (3.9 … 3.14)— 지원 Python 전체pytest tests/ -vaudit—pip-auditdiscover-apps-ps— PowerShell discovery 스크립트 문법verify_versions—pyproject.toml↔packaging/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 -- --main→Provisioning 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 doctor의guest_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 deviceUSB 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" 코멘트; 리포터 미해결 질문 없는 건 닫기.