docs: expand act_runner download, token, register, WSL

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Ivan Fontosh
2026-05-11 22:34:46 +08:00
parent 7fc952cc39
commit e76386ddb9
+93 -12
View File
@@ -85,23 +85,103 @@ git push origin main
## Раннер act_runner — без этого «Всего: 0» и сборки не будет
Gitea **не запускает** workflow на своём процессе: нужна **отдельная машина** (сервер, VPS или даже твой ПК), на которой крутится программа **[act_runner](https://docs.gitea.com/usage/actions/act-runner)** и которая **подключена** к твоему `git.mailib.ru`.
Gitea **не запускает** workflow на своём процессе: нужна **отдельная машина** (VPS, сервер или **WSL2 Ubuntu** на твоём ПК), на которой крутится **[act_runner](https://docs.gitea.com/usage/actions/act-runner)** и которая видит `git.mailib.ru` по сети.
Пока в **«Настройки» → «Действия» → «Раннеры»** написано **«Всего: 0»**, любой workflow (в том числе `release.yml`) **останется в ожидании** — нечему выполнять шаги.
Пока в **«Настройки» → «Действия» → «Раннеры»** написано **«Всего: 0»**, workflow **висит в ожидании** — нечему выполнять шаги.
### Что сделать по шагам
### Важно: это не тот токен, что для пуша в `DndGamePlayerUpdates`
1. Подготовь **Linux x86_64** (Ubuntu 22.04 удобнее всего) с доступом в интернет и к `git.mailib.ru` по HTTPS.
2. В репозитории **DndGamePlayer**: **«Настройки»** → **«Действия»** → **«Раннеры»** → кнопка **«Создать новый раннер»**.
3. В мастере выбери ОС (Linux), тип (**репозиторий** / repository), скопируй команду **регистрации** и одноразовый токен.
4. На машине скачай [релиз act_runner](https://gitea.com/gitea/act_runner/releases) для Linux, распакуй, выполни скопированную команду вида `./act_runner register ...`.
5. **Метки (labels):** при регистрации добавь метку **`ubuntu-22.04`** — она же указана в **`.gitea/workflows/release.yml`** в `runs-on:`. Если задашь другие метки (например только `self-hosted`) — **поменяй `runs-on`** в workflow на те же строки и закоммить.
6. Запуск демона: `./act_runner daemon` (или оформи как **systemd**-службу, чтобы раннер поднимался после перезагрузки).
7. Обнови страницу **«Раннеры»** — должен появиться **1** раннер в состоянии **online** (зелёный).
| Токен | Где взять | Зачем |
| --------------------------------------------------- | -------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| **Регистрация раннера** (короткая случайная строка) | **Настройки репо****Действия****Раннеры****Создать новый раннер** | Только для команды **`act_runner register`** (один раз на каталог с раннером) |
| **`DND_UPDATES_PUSH_TOKEN`** (PAT) | **Аватар****Настройки пользователя** → токены доступа | Для CI: пуш в публичный репо обновлений (см. шаг 1 выше) |
Если Gitea показала **только длинную строку** — это почти наверняка **токен регистрации раннера**. URL инстанса ты знаешь сам: **`https://git.mailib.ru`** (без пути к репозиторию).
### Требования к машине под наш `release.yml`
В workflow для job **`ubuntu-22.04`** идут **`sudo apt-get`** и **Wine** на **Linux**. Поэтому:
- Нужен **Linux x86_64** (идеально **Ubuntu 22.04**), либо **WSL2** с Ubuntu 22.04 на Windows.
- Запускать раннер на «голом» Windows с меткой `ubuntu-22.04` **бессмысленно** — шаги с `apt` не выполнятся.
### Шаг A — получить токен регистрации в Gitea
1. Открой репозиторий с кодом (**DndGamePlayer** или как он у тебя называется).
2. **Настройки****Действия****Раннеры****Создать новый раннер**.
3. Выбери тип **репозитория** (repository runner), ОС **Linux**.
4. **Скопируй токен** (и при желании подсказку с URL инстанса, если она есть). Команду из мастера можно **не копировать**, если ниже удобнее готовая.
### Шаг B — скачать act_runner (бинарник)
Официальные сборки: **[релизы act_runner на gitea.com](https://gitea.com/gitea/act_runner/releases)**.
1. Открой страницу релизов и посмотри **последний стабильный** тег, например **`v1.0.2`**.
2. В списке файлов скачай **`gitea-runner-ВЕРСИЯ-linux-amd64`** — это один исполняемый файл **без** расширения `.zip` (не путай с `darwin` / `arm64`, если у тебя обычный ПК/сервер Intel/AMD).
**Прямая ссылка (подставь свою версию из релиза):**
`https://gitea.com/gitea/act_runner/releases/download/v1.0.2/gitea-runner-1.0.2-linux-amd64`
В URL после `download/` идёт тег с **`v`**, в имени файла версия **без `v`**.
**Скачать с Linux/WSL одной командой** (замени `1.0.2` на актуальную версию с сайта):
```bash
mkdir -p ~/gitea-act-runner && cd ~/gitea-act-runner
VERSION="1.0.2"
curl -fL -o act_runner "https://gitea.com/gitea/act_runner/releases/download/v${VERSION}/gitea-runner-${VERSION}-linux-amd64"
chmod +x act_runner
./act_runner --version
```
Если `curl` ругается на сертификат — обнови CA или скачай тот же файл через браузер и положи в папку, затем `chmod +x`.
### Шаг C — регистрация (подставь свой токен)
В каталоге, где лежит `act_runner`, выполни **одну** команду (токен — тот, что выдала Gitea при создании раннера):
```bash
cd ~/gitea-act-runner
./act_runner register --no-interactive \
--instance "https://git.mailib.ru" \
--token "ВСТАВЬ_СЮДА_ТОКЕН_ИЗ_МАСТЕРА_GITEA" \
--name "dnd-release-runner" \
--labels "ubuntu-22.04:host"
```
Пояснения:
- **`--instance`** — корень твоего Gitea (**без** `/ifontosh/...`).
- **`--labels "ubuntu-22.04:host"`** — job в **`.gitea/workflows/release.yml`** имеет `runs-on: ubuntu-22.04`, а **`:host`** означает выполнение **на самой машине**, с настоящим `apt` и Wine (см. [документацию по меткам](https://docs.gitea.com/usage/actions/act-runner#labels)). Если при регистрации оставить **дефолтные** метки с **`docker://`**, шаги тоже могут сработать, но образ другой; для предсказуемости лучше **`ubuntu-22.04:host`** на чистой Ubuntu 22.04.
- После успешной регистрации в этой папке появится файл **`.runner`** — его не удаляй и не коммить.
Если Gitea пишет ошибку регистрации — часто неверный **токен** (устарел после «сброса» в UI) или выбран не тот уровень (инстанс/организация/репозиторий). Создай раннера заново и возьми **новый** токен.
### Шаг D — запуск
В той же папке:
```bash
./act_runner daemon
```
Окно терминала должно остаться **открытым**. Остановка — `Ctrl+C`.
Чтобы раннер жил после перезагрузки, оформи **systemd** по [официальной инструкции](https://docs.gitea.com/usage/actions/act-runner#start-the-runner-with-systemd) (пути к бинарнику и рабочей директории подставь свои, например `/home/USER/gitea-act-runner`).
### Шаг E — проверка в веб-интерфейсе
Обнови **Настройки → Действия → Раннеры**: должен быть **1** раннер, статус **online**. У него в метках должно быть что-то вроде **`ubuntu-22.04`** (в связке с **host**).
### Если у тебя только Windows
Установи **WSL2** и дистрибутив **Ubuntu 22.04**, открой терминал Ubuntu и выполни шаги B–D **там** (это уже Linux). Файловую систему Windows из WSL видно как `/mnt/d/...`, но проще держать каталог раннера в домашнем каталоге Linux (`~/gitea-act-runner`).
Официальная документация: [Gitea — Act Runner](https://docs.gitea.com/usage/actions/act-runner).
Если раннер создаёт **администратор сайта** на уровне всего инстанса — смысл тот же: важно, чтобы у раннера были метки, совпадающие с `runs-on` в workflow, и чтобы он был **online**.
Если раннер заводит **админ инстанса** — логика та же: раннер должен быть **online** и иметь метку, подходящую под **`runs-on`** в `release.yml` (сейчас **`ubuntu-22.04`**; при **`ubuntu-22.04:host`** в Gitea это сопоставляется с `runs-on: ubuntu-22.04`).
---
@@ -116,7 +196,8 @@ Gitea **не запускает** workflow на своём процессе: н
### Метки `runs-on` (если раннер уже есть, но job не берётся)
- В списке раннеров посмотри **метки** у online-раннера.
- В **`.gitea/workflows/release.yml`** в `runs-on:` должны быть **те же** метки. Сейчас по умолчанию: **`ubuntu-22.04`** (в job `build-windows` и `publish-update-feed`).
- В **`.gitea/workflows/release.yml`** в `runs-on:` должна совпадать **именно метка `ubuntu-22.04`** (Gitea сопоставляет её и с **`ubuntu-22.04:host`**, и с **`ubuntu-22.04:docker://...`** — см. [Labels](https://docs.gitea.com/usage/actions/act-runner#labels) в документации act_runner).
- Если при регистрации указал только **`self-hosted`** — добавь **`ubuntu-22.04:host`** (или поменяй `runs-on` в workflow на твои метки и закоммить).
Сборка **Windows (NSIS)** в CI идёт **на Linux** с **Wine**. Отдельная **macOS**-сборка в workflow отключена, пока нет Mac-раннера (см. комментарии в `release.yml`).