Last active 2 weeks ago

Add.md Raw

Последняя версия 5.1.1, вот прямая ссылка на исполняемый файл для 64-битной Windows: gitea-runner-5.1.1-windows-amd64.exe, около 19 МБ. Он же есть на странице релиза v5.1.1.

act_runner недавно переименовали в gitea-runner. Чтобы команды из моей инструкции подошли без изменений, просто переименуйте скачанный файл в act_runner.exe.

Info.md Raw

Вот как поднять Windows-раннер на отдельной машине с Windows 10/11 или Server 2022. Нужно около 80 ГБ свободного места.

  1. Поставьте инструменты сборки. Удобнее всего через winget в PowerShell от администратора:

winget install Microsoft.VisualStudio.2022.BuildTools --override "--wait --passive --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Component.VC.14.44.17.14.x86.x64 --add Microsoft.VisualStudio.Component.Windows11SDK.26100 --includeRecommended" winget install Git.Git Kitware.CMake Ninja-build.Ninja Python.Python.3.12 winget install WiXToolset.WiXToolset --version 3.14.1

После установки проверьте, что задана переменная WIX (echo %WIX%), а cmake --version показывает 4.0 или новее. Если ниже, выполните pip install "cmake>=4.0". Включите длинные пути: git config --system core.longpaths true.

  1. Получите токен регистрации. В Gitea откройте настройки репозитория Coder/aspia, раздел Actions, затем Runners, нажмите «Create new runner» и скопируйте токен.

  2. Скачайте и зарегистрируйте act_runner. Возьмите act_runner-*-windows-amd64.exe на странице релизов act_runner, переименуйте в act_runner.exe и положите в C:\act_runner. Затем:

cd C:\act_runner .\act_runner.exe generate-config > config.yaml .\act_runner.exe register --no-interactive --instance https://git.byte-mate.ru --token <ТОКЕН> --name win-builder --labels windows:host

Метка windows:host значит, что задачи выполняются прямо на машине, без Docker. Это и нужно для MSVC.

  1. Поправьте config.yaml:

в runner: поставьте timeout: 8h (первая сборка Qt через vcpkg долгая) и capacity: 1;

в host: укажите workdir_parent: C:\ar. Короткий путь важен, иначе vcpkg упрётся в лимит длины путей Windows.

  1. Запустите раннер как службу, чтобы он работал после перезагрузки. Проще всего через NSSM:

nssm install act_runner C:\act_runner\act_runner.exe daemon --config C:\act_runner\config.yaml nssm set act_runner AppDirectory C:\act_runner nssm start act_runner

  1. Проверка. Раннер должен появиться в списке раннеров в Gitea со статусом «Idle». После этого запустите workflow release с отмеченным build_windows.

Если раннер не сможет достучаться до git.byte-mate.ru или упадёт на сборке, пришлите лог, и я поправлю workflow. Заодно напишите метку вашего Ubuntu-раннера, чтобы я сверила её с файлом.

M.md Raw

Теперь pwsh требует сам vcpkg: для сборки зависимостей он скачивает свой PowerShell 7.6.2 и падает с той же ошибкой CET. Обойти это в workflow не получится, нужно чинить систему. Ошибки про Ninja и компилятор ниже — следствие этого сбоя, отдельно их чинить не надо.

Варианты по порядку:

Поставить все обновления Windows и перезагрузиться. Это настоящее исправление, именно его просит сообщение об ошибке.

Если машина виртуальная и обновления не помогли, то, скорее всего, гипервизор не передаёт гостевой системе поддержку CET процессора. Тогда попробуйте отключить проверку CET для .NET через системную переменную, а затем перезапустите службу раннера:

[Environment]::SetEnvironmentVariable('DOTNET_EnableCETCompat','0','Machine') nssm restart act_runner

В этом варианте я не уверена на 100%. Проверьте его в новом окне командой pwsh -v: если покажет версию, сборка пройдёт дальше.

Какая версия Windows стоит на этой машине? Её показывает winver. Если это старая сборка Server 2019 или Windows 10, проще сразу поставить обновления.