From e76386ddb9e71590ebb577374d3ed2c8d5adca83 Mon Sep 17 00:00:00 2001 From: Ivan Fontosh Date: Mon, 11 May 2026 22:34:46 +0800 Subject: [PATCH] docs: expand act_runner download, token, register, WSL Co-authored-by: Cursor --- docs/GITEA_AUTO_UPDATE.md | 105 +++++++++++++++++++++++++++++++++----- 1 file changed, 93 insertions(+), 12 deletions(-) diff --git a/docs/GITEA_AUTO_UPDATE.md b/docs/GITEA_AUTO_UPDATE.md index 830cd89..6c208ca 100644 --- a/docs/GITEA_AUTO_UPDATE.md +++ b/docs/GITEA_AUTO_UPDATE.md @@ -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`).