Some checks failed
Windows / verify (push) Has been cancelled
개발이 리눅스에서 이뤄지다 보니 Windows 전용 경로는 한 번도 실행해 본 적이
없다. 오디오 캡처, 전역 단축키, 모니터 열거, exe 빌드가 전부 여기 해당하고,
"리눅스에서 다 통과했는데 윈도우에서 안 되더라"가 나올 수 있는 지점이다.
- .gitea/workflows/windows.yml
push 때마다 Windows 러너에서 테스트 -> 스모크 -> 포터블 exe 빌드 ->
빌드된 exe 기동 확인까지 하고 exe·스크린샷을 artifact 로 올린다.
의존성을 packaging/requirements-portable.txt 로 깔아 torch 없는 포터블
조건을 그대로 재현하고, torch 가 섞이면 바로 실패하게 했다.
- packaging/windows_smoke.py
리눅스에서 확인 불가능한 항목만 모은 점검기. WASAPI 장치 열거, 소리 내는
프로그램 열거, 전역 단축키 등록/해제, 실제 모니터 열거, GPU 인식,
사용 가능 티어, 자막 오버레이 실제 렌더링(스크린샷 저장).
한 항목이 실패해도 나머지를 계속 돌려 전체 그림을 한 번에 보여준다.
러너 환경에 따라 없을 수 있는 항목(오디오 장치·보조 exe·GPU)은 경고로만
두고, 코드 문제인 항목만 빌드를 실패시킨다.
- docs/WINDOWS-TESTING.md
러너 등록 절차와, 러너 없이 직접 돌려보는 방법.
러너가 없으면 워크플로는 대기만 하므로 지금 상태에 영향이 없다.
검증: pytest 189개 통과, ruff clean, 워크플로 YAML 파싱 확인,
스모크 스크립트를 리눅스에서 실행해 항목별 판정과 종료코드 확인
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
112 lines
3.9 KiB
Markdown
112 lines
3.9 KiB
Markdown
# Windows에서 자동 검증 붙이기
|
|
|
|
개발은 리눅스에서 하고 있어서 **Windows 전용 경로는 테스트가 불가능**합니다.
|
|
오디오 캡처, 전역 단축키, 모니터 열거, exe 빌드가 전부 여기에 해당합니다.
|
|
그래서 "리눅스에서 다 통과했는데 윈도우에서 안 되더라"가 나올 수 있습니다.
|
|
|
|
Windows 러너를 하나 붙이면 push할 때마다 이 경로들이 자동으로 검증됩니다.
|
|
|
|
## 무엇이 자동으로 확인되나
|
|
|
|
| 항목 | 리눅스에서 | Windows 러너에서 |
|
|
|---|---|---|
|
|
| 단위 테스트 189개 | ✅ | ✅ |
|
|
| WASAPI 루프백 장치 열거 | ❌ | ✅ |
|
|
| 소리 내는 프로그램 열거 | ❌ | ✅ |
|
|
| 전역 단축키 등록/해제 | ❌ | ✅ |
|
|
| 모니터 열거·자막 배치 | 가상 화면만 | ✅ 실제 모니터 |
|
|
| 포터블 exe 빌드 | ❌ | ✅ |
|
|
| exe가 실제로 뜨는지 | ❌ | ✅ |
|
|
| GPU 인식 (CUDA) | 이 서버 GPU | ✅ 실제 게임 PC GPU |
|
|
| 실제 화면 스크린샷 | offscreen | ✅ 진짜 화면 |
|
|
|
|
결과물(exe, 스크린샷, 로그)은 Gitea Actions의 artifact로 올라오므로
|
|
원격에서도 눈으로 확인할 수 있습니다.
|
|
|
|
---
|
|
|
|
## 설치 (약 10분, 한 번만)
|
|
|
|
### 1. 필요한 것 설치
|
|
|
|
```powershell
|
|
winget install Python.Python.3.12
|
|
winget install Kitware.CMake
|
|
winget install Microsoft.VisualStudio.2022.BuildTools # C++ 데스크톱 워크로드 선택
|
|
```
|
|
|
|
### 2. Gitea 러너 내려받기
|
|
|
|
<https://gitea.com/gitea/act_runner/releases> 에서
|
|
`act_runner-<버전>-windows-amd64.exe` 를 받아 `C:\gitea-runner\act_runner.exe` 로 둡니다.
|
|
|
|
### 3. 등록 토큰 받기
|
|
|
|
Gitea 웹에서 저장소 → **설정 → Actions → 러너 → 등록 토큰 생성**
|
|
(주소: `https://git.tkrmagid.kr/tkrmagid/live-app-translator/settings/actions/runners`)
|
|
|
|
### 4. 등록하고 실행
|
|
|
|
```powershell
|
|
cd C:\gitea-runner
|
|
.\act_runner.exe register --no-interactive `
|
|
--instance https://git.tkrmagid.kr `
|
|
--token <위에서 받은 토큰> `
|
|
--name windows-gaming-pc `
|
|
--labels windows
|
|
|
|
.\act_runner.exe daemon
|
|
```
|
|
|
|
`--labels windows` 가 중요합니다. 워크플로의 `runs-on: windows` 와 맞아야 합니다.
|
|
|
|
### 5. 확인
|
|
|
|
아무거나 push 하면 저장소 **Actions** 탭에 `Windows` 워크플로가 돌기 시작합니다.
|
|
|
|
---
|
|
|
|
## 항상 켜두고 싶다면 (선택)
|
|
|
|
부팅할 때 자동으로 뜨게 하려면 서비스로 등록합니다.
|
|
|
|
```powershell
|
|
# 관리자 PowerShell
|
|
sc.exe create gitea-runner binPath= "C:\gitea-runner\act_runner.exe daemon --config C:\gitea-runner\config.yaml" start= auto
|
|
sc.exe start gitea-runner
|
|
```
|
|
|
|
게임할 때 방해되면 그냥 꺼두고, 확인이 필요할 때만 `daemon` 을 켜도 됩니다.
|
|
러너가 꺼져 있으면 워크플로는 대기만 하고 아무 일도 하지 않습니다.
|
|
|
|
---
|
|
|
|
## 안전에 대해
|
|
|
|
- 러너는 **저장소에 커밋된 워크플로 파일만** 실행합니다. 대화로 임의 명령을
|
|
넣을 수 없고, 무엇이 실행됐는지는 git 기록에 그대로 남습니다.
|
|
- 실행되는 내용은 `.gitea/workflows/windows.yml` 한 파일이며 언제든 읽고
|
|
고칠 수 있습니다. 테스트·빌드·스크린샷 외의 일은 하지 않습니다.
|
|
- 개인 PC가 부담스러우면 Proxmox에 Windows 11 VM을 만들어 거기에 러너를
|
|
붙여도 됩니다. GPU와 실제 게임 소리 확인은 안 되지만, 빌드·단축키·
|
|
모니터·UI는 전부 검증됩니다.
|
|
|
|
---
|
|
|
|
## 러너 없이 직접 돌려보기
|
|
|
|
러너를 안 붙이고 그때그때 확인만 하고 싶다면 이것만 실행하고 결과를
|
|
보내주셔도 됩니다.
|
|
|
|
```powershell
|
|
git clone https://git.tkrmagid.kr/tkrmagid/live-app-translator
|
|
cd live-app-translator
|
|
py -3.12 -m venv .venv
|
|
.\.venv\Scripts\python -m pip install -r packaging\requirements-portable.txt pytest
|
|
$env:PYTHONPATH="src"
|
|
.\.venv\Scripts\python -m pytest tests -q
|
|
.\.venv\Scripts\python packaging\windows_smoke.py
|
|
```
|
|
|
|
`artifacts\windows-smoke.txt` 와 `artifacts\*.png` 를 보내주시면 됩니다.
|