自前(=自己ホスト)のWindowsランナーを用意して、ログオン済みのデスクトップセッション上で走らせれば、github Actionからwindows guiアプリの自動テストができるようになる。
準備 概要
- 自己ホストWindowsランナーを1台用意
- そのマシンに常時ログオン状態の専用ユーザーを作る
- ランナーをサービスではなく“ユーザーのデスクトップ上”で常駐させる
- ここで FlaUI / pywinauto / PAD / AutoHotkey などでUI操作→スクショや動画を保存
- actions/upload-artifact でGitHub Actionsに成果物を返送
ポイント:UI自動化は対話セッション(WinStation\Desktop)が存在しないと動きません。
ログインしっぱなしのPCが必要です。ロックされちゃったらダメ。
サービスセッションでは動作不可。
手順
GitHubでランナーを追加する
- 対象の GitHubリポジトリを開く
- 右上の「⚙️ Settings」をクリック
- 左メニューから “Actions” → “Runners” を開く
- 「New self-hosted runner」ボタンを押す
- OSは「Windows」を選択
- 64bitを選択
すると、こんな画面が出ます👇
# 1. Download mkdir actions-runner && cd actions-runner Invoke-WebRequest -Uri https://github.com/actions/runner/releases/download/v2.316.0/actions-runner-win-x64-2.316.0.zip -OutFile actions-runner-win-x64-2.316.0.zip Add-Type -AssemblyName System.IO.Compression.FileSystem ; [System.IO.Compression.ZipFile]::ExtractToDirectory('actions-runner-win-x64-2.316.0.zip', "$PWD") # 2. Configure .\config.cmd --url https://github.com/あなたのユーザー名/リポジトリ名 --token XXXXXXXXXXXXX # 3. Run .\run.cmd
上記を3ステップを ランナーにするPCのPowerShell でそのまま実行します
2. Configure の途中で聞かれる項目:
サービス登録はしない
Runner name → デフォルトでOK(または任意)
Work folder → _work のままでOK
ラベル → windows gui などつけると便利(例:windows-gui)
3. Runの注意点
.\run.cmdは管理者権限付で起動したほうがよい。
管理者権限がないためにエラーが発生する場合があるから。
実際にジョブを走らせて確認
リポジトリの .github/workflows/test.yml に以下のような簡単なワークフローを追加
name: Self-hosted test on: [workflow_dispatch] jobs: test: runs-on: [self-hosted, windows] steps: - run: echo "Hello from self-hosted runner!" - run: powershell Get-Date - run: systeminfo | find "OS Name"
もしエラーで動かなかったら
actions-runnerフォルダ内の_diagフォルダに Worker_20251003-141317-utc.log といったファイル名でログがでる。