2025/02/26

打造自建 GitHub Actions 2.322 環境:在 Windows 11 設置 Self-Hosted Runner 並建置.Net Core專案

Windows 相較於 macOS 和 Linux 設置較為繁瑣
在 Windows 上設定 GitHub Actions Runner 需要額外的權限與步驟。請先 以管理員身份 開啟 PowerShell,然後執行以下指令:
下載並安裝 GitHub Actions Runner
# 回到 C:\
cd ..\..\

# 創建一個文件夾
mkdir actions-runner; cd actions-runner

# 下載最新的runner包
Invoke-WebRequest -Uri https://github.com/actions/runner/releases/download/v2.322.0/actions-runner-win-x64-2.322.0.zip -OutFile actions-runner-win-x64-2.322.0.zip

# 可選:驗證哈希值
if((Get-FileHash -Path actions-runner-win-x64-2.322.0.zip -Algorithm SHA256).Hash.ToUpper() -ne 'ace5de018c88492ca80a2323af53ff3f43d2c82741853efb302928f250516015'.ToUpper()){ throw 'Computed checksum did not match' }

# 解壓安裝程序
Add-Type -AssemblyName System.IO.Compression.FileSystem ; [System.IO.Compression.ZipFile]::ExtractToDirectory("$PWD/actions-runner-win-x64-2.322.0.zip", "$PWD")

# 配置 GitHub Actions runner
# 接著填入需要配置的設定即可
./config.cmd --url https://github.com/YourOrganization --token yourToken

設定權限並重新啟動服務
為了確保 Runner 能夠正確運行,請執行以下指令來授予必要的權限:

# 指定目標目錄為 C: (這裡應該指定更具體的 .NET 安裝目錄,例如 "C:\Program Files\dotnet")
$dotnetPath = "C:"

# 取得目標目錄的存取控制清單 (ACL)
$acl = Get-Acl $dotnetPath

# 定義要賦予 NT AUTHORITY\NETWORK SERVICE 的權限:
# - FullControl: 允許完全控制 (讀取、寫入、執行等)
# - ContainerInherit: 權限會應用到子資料夾
# - ObjectInherit: 權限會應用到子檔案
# - "None": 這個參數指定應用的特殊條件 (這裡為 None,表示沒有額外條件)
# - Allow: 允許這些權限
$permission = "NT AUTHORITY\NETWORK SERVICE","FullControl","ContainerInherit,ObjectInherit","None","Allow"

# 創建新的檔案系統存取控制規則
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission

# 設定新的存取控制規則到 ACL
$acl.SetAccessRule($accessRule)

# 將修改後的 ACL 套用到目標目錄
Set-Acl -Path $dotnetPath -AclObject $acl

# 將 NT AUTHORITY\NETWORK SERVICE 加入 Administrators 群組,以獲得管理員權限
net localgroup Administrators "NT AUTHORITY\NETWORK SERVICE" /add