From f79293d8936375eadd65a969bef60ff44192066e Mon Sep 17 00:00:00 2001 From: EJClaw Date: Sat, 26 Sep 2026 00:43:13 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20win-ci=20=EC=9A=B4=EC=98=81=20=EA=B8=B0?= =?UTF-8?q?=EB=A1=9D=20=E2=80=94=20MSVC=20=EA=B0=80=20=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=9D=B4=EC=9C=A0=EC=99=80=20=EA=B1=B0=EC=A7=93=20?= =?UTF-8?q?PASS=20=ED=95=A8=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 검증 통과한 포터블 exe 가 results/LiveSub.exe 로 회수된다는 것 - 산출물의 존재를 성공 근거로 쓰면 안 되는 이유 (옛 exe 가 남아 PASS) - MSVC 없이는 캡처 도우미가 조용히 빠지고, 그래서 검증 순서가 중요하다는 것 --- docs/WINDOWS-TESTING.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/docs/WINDOWS-TESTING.md b/docs/WINDOWS-TESTING.md index 121eaf9..8e8f099 100644 --- a/docs/WINDOWS-TESTING.md +++ b/docs/WINDOWS-TESTING.md @@ -200,6 +200,35 @@ tail -f /home/claude/win-ci/guest.log # 약 10분, 끝나면 results/summary.lo 푸시하면 재검증이 걸리지 않으니 sha 를 넘기세요. `build.sh` 를 다시 돌리면 안 됩니다 — 지워둔 Windows ISO 4.8GB 를 다시 내려받습니다. +배포할 포터블 exe 도 같은 통로로 돌아옵니다. 빌드와 기동이 **둘 다** 통과했을 +때만 `results/LiveSub.exe` 로 올라오므로, 거기 파일이 있다는 것 자체가 +"검증을 통과한 산출물" 이라는 뜻입니다. 그대로 릴리스에 올리면 됩니다. + +##### exe 빌드 단계가 거짓 PASS 를 내던 함정 + +앞 회차의 `exe기동` 점검이 띄운 `LiveSub.exe` 가 파일을 잡고 있으면 PyInstaller +가 `PermissionError` 로 죽습니다. 그런데 **옛 exe 는 그대로 남아 있어서** +`Test-Path dist\LiveSub.exe` 검사는 통과했고, 결국 빌드가 실패한 회차가 PASS 로 +보고됐습니다. 지금은 빌드 전에 프로세스를 죽이고 `build`·`dist` 를 지운 뒤 +PyInstaller 종료코드까지 확인합니다. **산출물의 존재를 성공의 근거로 쓰면 +안 됩니다** — 이전 성공이 남긴 것일 수 있습니다. + +##### MSVC 가 왜 VM 에 깔려 있나 + +`native\process_loopback` 의 `livesub_capture.exe` 는 WASAPI 프로세스 루프백을 +씁니다. 그 헤더(`audioclientactivationparams.h`)와 WRL 은 Windows SDK + MSVC +에만 있어서 cmake 만으로는 못 만듭니다. 그래서 `stage2.ps1` 이 VS 2022 Build +Tools(C++ 워크로드)를 설치합니다 — 첫 설치에 약 9분 걸리고 그 뒤로는 건너뜁니다. + +이게 없으면 **포터블 빌드는 그대로 성공하되** 프로그램별 캡처가 출력 장치 +전체 캡처로 조용히 폴백됩니다. 기능이 빠진 exe 가 PASS 로 나오는 조합이라, +검증 순서에서 `native_capture` 를 `windows_smoke` 와 `pyinstaller` **앞에** +둡니다. 뒤에 두면 둘 다 "없음"을 정상으로 보고 지나갑니다. + +실제로 이 경로는 MSVC 를 깔기 전까지 **한 번도 컴파일된 적이 없었고**, 깔자마자 +`main.cpp` 가 C2275 로 죽었습니다. CI 의 네이티브 빌드 단계가 +`continue-on-error` 였던 탓에 그때까지 드러나지 않았습니다. + 접속 정보: 계정 `ci` / 비밀번호는 `~/.config/ejclaw/secrets.json` 의 `win-ci.9` 항목. RDP 는 호스트 `127.0.0.1:13389`, VNC 는 `127.0.0.1:5919`.