自己ホストWindowsランナーを作ってgithub Actionから自動テストの仕組みを作る

自前(=自己ホスト)の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 といったファイル名でログがでる。