Блокер (эскалация): нет Gitea Actions runner — CI-гейт #17 и DoD «CI green» недостижимы #52

Closed
opened 2026-10-22 00:11:30 +03:00 by embeddevio · 2 comments
Owner

Итог

Gitea Actions включён, но ни один runner не зарегистрирован — джобы не запускаются, статусов CI нет. Пока runner'а нет, AC задачи #17 (jobs lint/unit/security/build со ссылками на артефакты) и пункт DoD «CI green» для всех задач Sprint 0 недостижимы. Требуется действие владельца: выдать registration token в UI Gitea.

Актуальный статус задачи #17 на доске: карточка t_37f7b719 переведена в capability-блок («нужна возможность, которой нет в окружении»), а не в «краш по квоте провайдера» (см. отдельную эскалацию по лимиту polza).

Доказательства (отчёт devops в #17, комментарий 298)

Проверка Результат
API/MCP на список runner'ов инструмента нет; есть только workflows/runs/jobs/artifacts/secrets
Эмпирический пробник: push workflow в ветку ci/runner-probe run #1 висит в queued > 4 минут, job runner-probe — queued, steps: [], started_at: 1970-01-01 — задачу никто не забирает
Хост агентов 192.168.1.44 docker: command not found
Docker-хост 192.168.1.147 ни контейнера, ни systemd-юнита, ни бинаря act_runner; trivy отсутствует
Ресурсы .147 2 vCPU, 2 ГБ RAM (~850 МБ доступно), 6.6 ГБ свободно на /, build cache 3.9 ГБ

Пруф: http://192.168.1.111:3000/embeddevio/awg-dash/actions/runs/1
Гейты при этом воспроизводимы локально (coverage <70 % роняет job, HIGH-находка роняет pipeline, pip-audit/bandit проходят) — не хватает ровно исполнителя.

Что нужно от владельца

  1. Gitea → embeddevio/awg-dash → Settings → Actions → Runners → Create new Runner → выдать registration token (self-hosted, только этот репозиторий). Токен — секрет, передать devops через приватный канал, не в issue.
  2. На 192.168.1.147 зарегистрировать gitea/act_runner (готовая команда — в комментарии 298 задачи #17, вариант A), с проброшенным docker-сокетом для сборки образа внутри job'а (это root-эквивалент для job'ов — фиксирую осознанно, для homelab приемлемо).
  3. Установить trivy на .147 (security-джоба, ~300 МБ с БД).
  4. Решить по ресурсам: 850 МБ свободной RAM для job-контейнера с pip install — риск OOM; нужно либо расширить хост, либо вариант B (host-mode runner), либо аккуратная очистка build cache с согласованием владельца #18 (на .147 идёт сборка образа, кэш трогать нельзя без апрува).
  5. После регистрации runner'а: devops снимает пробник ci/runner-probe, коммитит ci.yml в feat/17-ci, прогоняет AC и открывает PR.

Связанная зависимость (порядок влития)

  • PR #47 (каркас монорепо, pyproject.toml с порогами ruff/mypy/pytest) → PR #49 (#18, Dockerfile) → PR #50 (#20, storage). #50 без pyproject.toml из #47 не имеет что запускать в CI; после влития #47 ветку feat/20-storage можно подтянуть (пересечений по файлам нет).
  • Мержи и деплой — вне advisory-режима TechLead: нужен явный апрув владельца на каждый мерж в main.

Отдельно: оба пункта (runner + порядок мержей) — единственное, что сейчас мешает закрыть Sprint 0 «Фундамент».

## Итог **Gitea Actions включён, но ни один runner не зарегистрирован** — джобы не запускаются, статусов CI нет. Пока runner'а нет, AC задачи #17 (jobs `lint`/`unit`/`security`/`build` со ссылками на артефакты) и пункт DoD «CI green» для **всех** задач Sprint 0 недостижимы. Требуется действие владельца: выдать registration token в UI Gitea. Актуальный статус задачи #17 на доске: карточка `t_37f7b719` переведена в capability-блок («нужна возможность, которой нет в окружении»), а не в «краш по квоте провайдера» (см. отдельную эскалацию по лимиту polza). ## Доказательства (отчёт devops в #17, комментарий 298) | Проверка | Результат | |---|---| | API/MCP на список runner'ов | инструмента нет; есть только workflows/runs/jobs/artifacts/secrets | | Эмпирический пробник: push workflow в ветку `ci/runner-probe` | run **#1 висит в `queued` > 4 минут**, job `runner-probe` — `queued`, `steps: []`, `started_at: 1970-01-01` — задачу никто не забирает | | Хост агентов 192.168.1.44 | `docker: command not found` | | Docker-хост 192.168.1.147 | ни контейнера, ни systemd-юнита, ни бинаря `act_runner`; `trivy` отсутствует | | Ресурсы .147 | 2 vCPU, 2 ГБ RAM (~850 МБ доступно), 6.6 ГБ свободно на `/`, build cache 3.9 ГБ | Пруф: http://192.168.1.111:3000/embeddevio/awg-dash/actions/runs/1 Гейты при этом воспроизводимы локально (coverage <70 % роняет job, HIGH-находка роняет pipeline, `pip-audit`/`bandit` проходят) — не хватает ровно исполнителя. ## Что нужно от владельца 1. Gitea → `embeddevio/awg-dash` → Settings → Actions → Runners → **Create new Runner** → выдать registration token (self-hosted, только этот репозиторий). Токен — секрет, передать devops через приватный канал, не в issue. 2. На 192.168.1.147 зарегистрировать `gitea/act_runner` (готовая команда — в комментарии 298 задачи #17, вариант A), с проброшенным docker-сокетом для сборки образа внутри job'а (это root-эквивалент для job'ов — фиксирую осознанно, для homelab приемлемо). 3. Установить `trivy` на .147 (security-джоба, ~300 МБ с БД). 4. Решить по ресурсам: 850 МБ свободной RAM для job-контейнера с `pip install` — риск OOM; нужно либо расширить хост, либо вариант B (host-mode runner), либо аккуратная очистка build cache **с согласованием владельца #18** (на .147 идёт сборка образа, кэш трогать нельзя без апрува). 5. После регистрации runner'а: devops снимает пробник `ci/runner-probe`, коммитит `ci.yml` в `feat/17-ci`, прогоняет AC и открывает PR. ## Связанная зависимость (порядок влития) - PR **#47** (каркас монорепо, `pyproject.toml` с порогами ruff/mypy/pytest) → PR **#49** (`#18`, Dockerfile) → PR **#50** (`#20`, storage). #50 без `pyproject.toml` из #47 не имеет что запускать в CI; после влития #47 ветку `feat/20-storage` можно подтянуть (пересечений по файлам нет). - Мержи и деплой — вне advisory-режима TechLead: нужен явный апрув владельца на каждый мерж в `main`. _Отдельно: оба пункта (runner + порядок мержей) — единственное, что сейчас мешает закрыть Sprint 0 «Фундамент»._
embeddevio added the devopsblocker labels 2026-10-22 00:11:30 +03:00
embeddevio self-assigned this 2026-10-22 00:11:30 +03:00
Author
Owner

TechLead — статус блокера на 28.10 (проверено).

Блокер актуален:

  • В репозитории 7 прогонов Actions (run #1 — пробник ci/runner-probe, runs #2–#7 — пуш в feat/19-openapi), все status=completed, conclusion=cancelled, ни один job не выполнялся → runner так и не зарегистрирован.
  • На .147 по-прежнему нет act_runner/trivy (проверка devops, комментарий 298 в #17).

Не связано с этим блокером, но было в те же сутки: ключ polza оказался деактивирован (HTTP 403: API ключ заблокирован или деактивирован) — воркеры падали с rc=78 (terminal provider error). Ключ владельцем ротирован, с 28.10 работа команды возобновлена (лимит 400 ₽/сут).

Что нужно, чтобы закрыть этот блокер: registration token (Gitea → Settings → Actions → Runners → Create new Runner) → регистрация gitea/act_runner на 192.168.1.147 → trivy на том же хосте → devops коммитит ci.yml в feat/17-ci и закрывает AC задачи #17. Напоминаю про ресурсы: ~850 МБ свободной RAM на .147 — вероятен OOM на job с pip install, нужно решение (расширить хост / host-mode runner / аккуратная очистка build cache с апрувом владельца #18).

**TechLead — статус блокера на 28.10 (проверено).** Блокер **актуален**: - В репозитории **7 прогонов Actions** (`run #1` — пробник `ci/runner-probe`, `runs #2–#7` — пуш в `feat/19-openapi`), все `status=completed`, `conclusion=cancelled`, ни один job не выполнялся → runner так и не зарегистрирован. - На `.147` по-прежнему нет `act_runner`/`trivy` (проверка devops, комментарий 298 в #17). **Не связано с этим блокером, но было в те же сутки:** ключ polza оказался деактивирован (`HTTP 403: API ключ заблокирован или деактивирован`) — воркеры падали с `rc=78` (terminal provider error). Ключ владельцем ротирован, с 28.10 работа команды возобновлена (лимит 400 ₽/сут). **Что нужно, чтобы закрыть этот блокер:** registration token (Gitea → Settings → Actions → Runners → Create new Runner) → регистрация `gitea/act_runner` на 192.168.1.147 → `trivy` на том же хосте → devops коммитит `ci.yml` в `feat/17-ci` и закрывает AC задачи #17. Напоминаю про ресурсы: ~850 МБ свободной RAM на .147 — вероятен OOM на job с `pip install`, нужно решение (расширить хост / host-mode runner / аккуратная очистка build cache с апрувом владельца #18).
Author
Owner

Блокер снят — проверено 29.10.2026 20:5x MSK.

Runner зарегистрирован и обрабатывает job'ы:

  • контейнер gitea-runner-awg-repo на 192.168.1.147 — Up 23 hours, RAM хоста 1.2/3.0 Gi (запас есть);
  • свежие прогоны с зафиксированными результатами: run 64/65 (fix/59-checkout-fallback, sha ca14ae6) — оба job'а success в 23:36–23:41; run 66/67 (feat/17-ci, sha 80b33d5) — ci / lint, ci / unit (198 passed, coverage 96.80 %), ci / security green;
  • job-статусы пишутся в коммиты (комбинированный статус PR #60 = 16 контекстов), вечных queued больше нет.

Остаточные красные статусы на PR — не про runner: contract-openapi/* падает на шаге checkout из-за дефекта Gitea git-http (#59, обход готов в PR #63).

Что ещё не закрыто по DoD #17 и почему это не этот блокер: прод-секрет REGISTRY_TOKEN (job push) и merge-цепочка PR #63 → #60 → #49 — см. комментарий в #17.

Закрываю. Регресс отслеживает 30-минутный дайджест (проверяет состояние раннера).

**Блокер снят — проверено 29.10.2026 20:5x MSK.** Runner зарегистрирован и обрабатывает job'ы: - контейнер `gitea-runner-awg-repo` на 192.168.1.147 — **Up 23 hours**, RAM хоста 1.2/3.0 Gi (запас есть); - свежие прогоны с зафиксированными результатами: run **64/65** (`fix/59-checkout-fallback`, sha `ca14ae6`) — оба job'а `success` в 23:36–23:41; run **66/67** (`feat/17-ci`, sha `80b33d5`) — `ci / lint`, `ci / unit` (198 passed, coverage 96.80 %), `ci / security` green; - job-статусы пишутся в коммиты (комбинированный статус PR #60 = 16 контекстов), вечных `queued` больше нет. Остаточные красные статусы на PR — не про runner: `contract-openapi/*` падает на шаге `checkout` из-за дефекта Gitea git-http (#59, обход готов в PR #63). Что ещё не закрыто по DoD #17 и почему это **не** этот блокер: прод-секрет `REGISTRY_TOKEN` (job `push`) и merge-цепочка PR #63 → #60 → #49 — см. комментарий в #17. Закрываю. Регресс отслеживает 30-минутный дайджест (проверяет состояние раннера).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: embeddevio/awg-dash#52