Files
act_runner/Install_act_runnerx64.ps1

94 lines
4.1 KiB
PowerShell
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ================================================================= #
# SMART INSTALLER: ACT_RUNNER + NSSM + SYSTEM LABELS (STRICT MODE)
# ================================================================= #
$workDir = "C:\act_runner"
$exeUrl = "https://git.dadehard.ru/kalugin66/act_runner/raw/branch/main/act_runner-0.4.0-windows-amd64.exe"
$nssmUrl = "https://git.dadehard.ru/kalugin66/act_runner/raw/branch/main/nssm.exe"
$instanceUrl = "https://git.dadehard.ru/"
$token = "UzVNobPFBJe8ZoQXwu5ZamfgqCpTJZGR3LDVnX7N"
$serviceName = "act_runner"
# 1. Сбор системной информации (С вашей меткой School25)
$defaultLabel = "School25" # Ваша основная метка
$pcName = [System.Net.Dns]::GetHostName()
$arch = if ([Environment]::Is64BitOperatingSystem) { "x64" } else { "x86" }
$memRaw = (Get-CimInstance Win32_ComputerSystem).TotalPhysicalMemory
$memGB = [math]::Round($memRaw / 1GB)
$memLabel = "$($memGB)GB_RAM"
# Формируем полный список для регистрации в Gitea
$fullLabels = "$defaultLabel:host,windows-amd64:host,self-hosted:host,$pcName:host,$arch:host,$memLabel:host"
Write-Host "--- Данные системы: ПК=$pcName, ОЗУ=$memLabel, Метка=$defaultLabel ---" -ForegroundColor Magenta
# 2. Подготовка окружения
if (-not (Test-Path $workDir)) { New-Item -ItemType Directory -Path $workDir | Out-Null }
Set-Location $workDir
# 3. Очистка старых процессов
Write-Host "--- Шаг 1: Очистка ---" -ForegroundColor Cyan
Stop-Service $serviceName -Force -ErrorAction SilentlyContinue
Stop-Process -Name "act_runner" -Force -ErrorAction SilentlyContinue
sc.exe delete $serviceName | Out-Null
Start-Sleep -Seconds 2
# 4. Загрузка компонентов
Write-Host "--- Шаг 2: Загрузка EXE ---" -ForegroundColor Cyan
if (-not (Test-Path "act_runner.exe")) { Invoke-WebRequest -Uri $exeUrl -OutFile "act_runner.exe" }
if (-not (Test-Path "nssm.exe")) { Invoke-WebRequest -Uri $nssmUrl -OutFile "nssm.exe" }
Unblock-File -Path "$workDir\act_runner.exe"
Unblock-File -Path "$workDir\nssm.exe"
# 5. Генерация config.yaml (Используем {0} для School25)
Write-Host "--- Шаг 3: Формирование конфига ---" -ForegroundColor Cyan
$template = @"
log:
level: info
runner:
file: .runner
capacity: 1
labels:
- "{0}:host"
- "windows-amd64:host"
- "self-hosted:host"
- "{1}:host"
- "{2}:host"
- "{3}:host"
container:
force_pull: false
host:
workdir: ""
"@
# Принудительная подстановка: 0-Школа, 1-Имя ПК, 2-Архитектура, 3-Память
$configText = $template -f $defaultLabel, $pcName, $arch, $memLabel
# Запись в файл (UTF8 без BOM)
[System.IO.File]::WriteAllText("$workDir\config.yaml", $configText)
# 6. Проверка и регистрация
Write-Host "--- Шаг 4: Авторизация ---" -ForegroundColor Cyan
if (-not (Test-Path ".runner")) {
Write-Host "Регистрация нового раннера..." -ForegroundColor Yellow
.\act_runner.exe register --instance $instanceUrl --token $token --no-interactive --name "$pcName" --labels "$fullLabels"
}
# 7. Установка службы через NSSM
Write-Host "--- Шаг 5: Установка службы ---" -ForegroundColor Cyan
$exePath = "$workDir\act_runner.exe"
$args = "daemon --config `"$workDir\config.yaml`""
& ".\nssm.exe" install $serviceName $exePath $args
& ".\nssm.exe" set $serviceName AppDirectory $workDir
& ".\nssm.exe" set $serviceName Start SERVICE_AUTO_START
& ".\nssm.exe" set $serviceName ObjectName LocalSystem
# 8. Запуск
Write-Host "--- Шаг 6: Запуск ---" -ForegroundColor Cyan
Start-Service $serviceName
if ((Get-Service $serviceName).Status -eq "Running") {
Write-Host "===============================================" -ForegroundColor Green
Write-Host "ГОТОВО! Раннер активен с меткой $defaultLabel" -ForegroundColor Green
Write-Host "===============================================" -ForegroundColor Green
}