diff --git a/docs/GITEA_AUTO_UPDATE.md b/docs/GITEA_AUTO_UPDATE.md index 6c208ca..bebbd4f 100644 --- a/docs/GITEA_AUTO_UPDATE.md +++ b/docs/GITEA_AUTO_UPDATE.md @@ -159,7 +159,7 @@ cd ~/gitea-act-runner Если Gitea пишет ошибку регистрации — часто неверный **токен** (устарел после «сброса» в UI) или выбран не тот уровень (инстанс/организация/репозиторий). Создай раннера заново и возьми **новый** токен. -### Шаг D — запуск +### Шаг D — запуск вручную (для проверки) В той же папке: @@ -167,9 +167,125 @@ cd ~/gitea-act-runner ./act_runner daemon ``` -Окно терминала должно остаться **открытым**. Остановка — `Ctrl+C`. +Окно терминала должно остаться **открытым**. Остановка — `Ctrl+C`. Когда убедишься, что в Gitea раннер **online**, лучше перейти на **systemd** (шаг ниже). -Чтобы раннер жил после перезагрузки, оформи **systemd** по [официальной инструкции](https://docs.gitea.com/usage/actions/act-runner#start-the-runner-with-systemd) (пути к бинарнику и рабочей директории подставь свои, например `/home/USER/gitea-act-runner`). +### Шаг D1 — systemd: автозапуск после перезагрузки (подробно) + +Идея: **systemd** сам поднимает `act_runner daemon` при загрузке системы и перезапускает процесс при падении. Рабочая директория должна быть **та же**, где лежат **`act_runner`** и зарегистрированный файл **`.runner`** (обычно `~/gitea-act-runner`). + +#### 0) Подготовка + +1. Регистрация (**шаг C**) уже выполнена, в каталоге есть **`.runner`**. +2. Узнай **точный путь** к каталогу (systemd не понимает `~`): + +```bash +cd ~/gitea-act-runner && pwd +``` + +Запомни вывод, например **`/home/ivan/gitea-act-runner`**. Имя пользователя Linux: + +```bash +whoami +``` + +Дальше в примерах: **`/home/ivan/gitea-act-runner`** и пользователь **`ivan`** — замени на свои. + +#### 1) Останови ручной запуск + +Если где-то в терминале уже крутится `./act_runner daemon` — заверши **Ctrl+C**, иначе два процесса будут мешать друг другу. + +#### 2) Создай unit-файл службы + +На **VPS / обычной Ubuntu** с правами root: + +```bash +sudo nano /etc/systemd/system/gitea-act-runner.service +``` + +Вставь текст **целиком** (подставь свои `User`, `Group`, `WorkingDirectory`, `ExecStart`): + +```ini +[Unit] +Description=Gitea Actions act_runner +Documentation=https://docs.gitea.com/usage/actions/act-runner +After=network-online.target +Wants=network-online.target + +[Service] +Type=simple +User=ivan +Group=ivan +WorkingDirectory=/home/ivan/gitea-act-runner +ExecStart=/home/ivan/gitea-act-runner/act_runner daemon +Restart=always +RestartSec=10 + +# Логи в journald (см. ниже как читать) +StandardOutput=journal +StandardError=journal + +[Install] +WantedBy=multi-user.target +``` + +Сохрани файл: в **nano** — **Ctrl+O**, Enter, **Ctrl+X**. + +Пояснения: + +- **`User` / `Group`** — под этим пользователем ты делал `register` и владеешь папкой (проверка: `ls -la ~/gitea-act-runner` — владелец должен совпадать). +- **`WorkingDirectory`** — каталог с **`.runner`**; без него раннер может не найти регистрацию. +- **`ExecStart`** — полный путь к бинарнику **`act_runner`** (тот, что скачал и сделал `chmod +x`). +- Блок **`After=network-online.target`** — старт после сети (удобно для `git`/`npm` в CI). Если вдруг зависнет старт из‑за сетевого таргета, можно временно заменить на **`After=network.target`**. + +Официальный пример с отдельным пользователем `act_runner` и `config.yaml`: [Start the runner with Systemd](https://docs.gitea.com/usage/actions/act-runner#start-the-runner-with-systemd) — у нас проще: один пользователь и без отдельного `config.yaml`, пока дефолты устраивают. + +#### 3) Включи и запусти службу + +```bash +sudo systemctl daemon-reload +sudo systemctl enable gitea-act-runner.service +sudo systemctl start gitea-act-runner.service +sudo systemctl status gitea-act-runner.service +``` + +В **`status`** должно быть **`active (running)`** зелёным. Если **`failed`** — смотри лог (шаг 5). + +Полезные команды: + +| Действие | Команда | +| --------------------- | ------------------------------------------------------------- | +| Остановить | `sudo systemctl stop gitea-act-runner` | +| Запустить снова | `sudo systemctl start gitea-act-runner` | +| Перезапуск | `sudo systemctl restart gitea-act-runner` | +| Выключить автозапуск | `sudo systemctl disable gitea-act-runner` | +| Проверка после ребута | перезагрузи машину, затем `systemctl status gitea-act-runner` | + +#### 4) Проверка в Gitea + +Как в **шаге E**: раннер снова **online** (иногда 10–30 секунд после `start`). + +#### 5) Логи, если что-то не так + +```bash +sudo journalctl -u gitea-act-runner -e --no-pager +``` + +В реальном времени: + +```bash +sudo journalctl -u gitea-act-runner -f +``` + +Типичные ошибки: неверный **`User`** (нет прав на каталог), **`WorkingDirectory`** не тот (нет **`.runner`**), бинарник не исполняемый (`chmod +x`), или старый процесс `act_runner` ещё запущен вручную. + +#### WSL2 (Ubuntu в Windows) + +Если раннер стоит **внутри WSL2**: + +1. На современных WSL **systemd уже может быть включён**. Проверка: `systemctl status` — без ошибки «running in chroot». +2. Если `systemctl` недоступен: в файле **`/etc/wsl.conf`** внутри дистрибутива добавь блок **`[boot]`** с **`systemd=true`**, затем из **PowerShell** Windows выполни **`wsl --shutdown`**, снова зайди в Ubuntu и повтори шаги 2–3. Подробнее: [документация Microsoft про systemd в WSL](https://learn.microsoft.com/en-us/windows/wsl/systemd). + +После **`wsl --shutdown`** раннер на WSL не работает, пока ты снова не откроешь WSL (это нормально для «домашнего» CI). ### Шаг E — проверка в веб-интерфейсе