From bef9eaf19bb5510f4908996968f3ced2c3aaa856 Mon Sep 17 00:00:00 2001 From: EJClaw Date: Wed, 23 Sep 2026 03:21:27 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20Windows=20=EB=9F=AC=EB=84=88=20=EC=B2=AB?= =?UTF-8?q?=20=EB=8B=A8=EA=B3=84=20bash=20=EC=9D=98=EC=A1=B4=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0=20+=20=ED=95=84=EC=88=98=20=EC=84=A4=EC=B9=98=20?= =?UTF-8?q?=EB=AA=A9=EB=A1=9D=20=EB=B3=B4=EC=99=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Windows 호스트 러너에서 bash.exe 는 기본 PATH 에 없다 (Git for Windows 는 Git\cmd 만 PATH 에 등록하고 bash.exe 는 Git\bin 에 있다). OS 확인 단계가 첫 스텝이라 러너를 붙이자마자 "bash not found" 로 죽는다. pwsh 로 바꿨다. 같은 이유로 문서 설치 목록에 Git.Git 과 Microsoft.PowerShell 을 추가했다. 나머지 7개 스텝이 전부 pwsh(7.x) 를 쓰는데 Windows 기본 탑재는 5.1 뿐이라 pwsh 없이는 단계마다 실패한다. 트리거 설명도 실제 on: 설정(main push / workflow_dispatch)에 맞춰 고쳤다. Co-Authored-By: Claude Opus 4.7 --- .gitea/workflows/windows.yml | 20 +++++++++++++------- docs/WINDOWS-TESTING.md | 11 ++++++++++- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/.gitea/workflows/windows.yml b/.gitea/workflows/windows.yml index ea30d6f..466e46b 100644 --- a/.gitea/workflows/windows.yml +++ b/.gitea/workflows/windows.yml @@ -1,6 +1,6 @@ # Windows 검증 — Gitea Actions # -# 이 저장소에 push 하면 Windows 러너가 자동으로 +# main 에 push 하거나 Actions 탭에서 수동 실행하면 Windows 러너가 자동으로 # 1) 테스트를 돌리고 # 2) 포터블 exe 를 빌드하고 # 3) 앱이 실제로 뜨는지 확인한 뒤 @@ -25,15 +25,21 @@ jobs: # Gitea 는 runs-on 이 어떤 러너 라벨과도 안 맞으면 작업을 실패시키지 않고 # 기본 ubuntu 컨테이너에서 돌린다. 라벨을 잘못 등록하면 Windows 검증이 # 조용히 리눅스에서 돌아가 "통과했다"는 착각을 준다. 그래서 먼저 막는다. + # + # bash 가 아니라 pwsh 를 쓴다. Windows 에 Git Bash 가 깔려 있어도 + # bash.exe 는 기본 PATH 에 없어서 (Git\cmd 만 등록된다) 첫 단계부터 + # "bash not found" 로 죽는다. 라벨을 잘못 걸어 리눅스 컨테이너로 + # 떨어진 경우에는 pwsh 가 없어서 역시 실패하므로, 어느 쪽이든 + # 조용히 통과하는 일은 없다. - name: Windows 에서 돌고 있는지 확인 - shell: bash + shell: pwsh run: | - echo "RUNNER_OS=$RUNNER_OS" - if [ "$RUNNER_OS" != "Windows" ]; then - echo "::error::Windows 러너가 아닙니다 ($RUNNER_OS)." - echo "::error::러너를 'windows:host' 라벨로 등록했는지 확인하세요." + Write-Host "RUNNER_OS=$env:RUNNER_OS" + if ($env:RUNNER_OS -ne "Windows") { + Write-Host "::error::Windows 러너가 아닙니다 ($env:RUNNER_OS)." + Write-Host "::error::러너를 'windows:host' 라벨로 등록했는지 확인하세요." exit 1 - fi + } - name: 소스 받기 uses: actions/checkout@v4 diff --git a/docs/WINDOWS-TESTING.md b/docs/WINDOWS-TESTING.md index 2b5fb72..245d0e4 100644 --- a/docs/WINDOWS-TESTING.md +++ b/docs/WINDOWS-TESTING.md @@ -4,7 +4,8 @@ 오디오 캡처, 전역 단축키, 모니터 열거, exe 빌드가 전부 여기에 해당합니다. 그래서 "리눅스에서 다 통과했는데 윈도우에서 안 되더라"가 나올 수 있습니다. -Windows 러너를 하나 붙이면 push할 때마다 이 경로들이 자동으로 검증됩니다. +Windows 러너를 하나 붙이면 `main` 에 push할 때(또는 Actions 탭에서 수동 +실행할 때) 이 경로들이 자동으로 검증됩니다. ## 무엇이 자동으로 확인되나 @@ -30,11 +31,19 @@ Windows 러너를 하나 붙이면 push할 때마다 이 경로들이 자동으 ### 1. 필요한 것 설치 ```powershell +winget install Git.Git # 소스 받기 (checkout) 에 필요 +winget install Microsoft.PowerShell # 워크플로가 pwsh 7 을 씁니다 winget install Python.Python.3.12 winget install Kitware.CMake winget install Microsoft.VisualStudio.2022.BuildTools # C++ 데스크톱 워크로드 선택 ``` +`Git.Git` 과 `Microsoft.PowerShell` 은 빠뜨리기 쉬운데 둘 다 필수입니다. +Git 이 없으면 소스를 못 받고, Windows 에 기본으로 깔린 PowerShell 은 5.1 이라 +워크플로가 쓰는 `pwsh`(7.x) 가 없으면 단계마다 실패합니다. +설치 후 새 PowerShell 창을 열어 `git --version`, `pwsh --version` 이 +나오는지 확인하세요. + ### 2. Gitea 러너 내려받기 에서