Implemented a new endpoint for tenant refresh in the HTTP API, allowing for the refresh of modules associated with a tenant. Enhanced job processing to handle tenant refresh jobs, including logic for managing module IDs and job status updates. Updated the scheduler to enqueue tenant refresh jobs based on module due dates, improving the overall efficiency of module management. Additionally, introduced caching for ASN prefix data to optimize performance during refresh operations.
Gitea Actions
В репозитории включён workflow workflows/ci.yaml.
Job changes вычисляет два флага:
openapi— в диффе естьdocs/openapi.yamlилиredocly.yaml→ запускается openapi (Redocly lint).code— в диффе есть хотя бы один файл вне «только документация» → запускаются go, bird2 и при push в main/master docker-images.
Если изменены только файлы из списка ниже, code=false: Go-тесты, bird2 и сборка образов не запускаются; при необходимости всё ещё выполняется openapi, если трогали OpenAPI или redocly.yaml.
Список путей «только документация» (без полной сборки): всё под docs/, корневой README.md, web/README.md, .gitea/README.md, redocly.yaml.
Любой другой путь (в т.ч. .gitea/workflows/ci.yaml, go.mod, web/package.json, deploy/**, **/*.go) включает полный пайплайн.
Требования к runner:
- Метка
ubuntu-latest(или изменитеruns-onпод свои labels). - Job
bird2ставит пакет bird2 из репозитория Ubuntu на runner (как образevobgp-bird2наubuntu:noble) и вызываетbird -c … -pпо файлам в checkout (без вложенного Docker: иначе bind-mount/workspace/...часто не виден демону Docker на хосте). - Job docker-images требует Docker и (для push) доступ к Container Registry Gitea с runner’а.
Сборка и публикация образов (docker-images)
Запускается только при push в ветки main или master (после успешного job go). Собираются образы из deploy/docker/* (все бинарники через gobinary, плюс evobgp-web, evobgp-agent, evobgp-bird2).
Секреты репозитория (для push в реестр)
Хост Container Registry в workflow зашит: git.shts.su (docker/login-action и теги образов).
В настройках репозитория Gitea: Settings → Actions → Secrets (или аналог):
| Секрет | Назначение |
|---|---|
ACTIONS_PAT |
(Опционально) PAT с правом записи пакетов. Если не задан, для docker login используется gitea.token (нужны права у workflow на пакеты). |
Вход в реестр в workflow:
- registry:
git.shts.su; - username:
${{ gitea.actor }}; - password:
${{ secrets.ACTIONS_PAT || gitea.token }}.
Почему шаг «Log in to Gitea Registry» мог быть skipped
Раньше в if: стояло secrets.ACTIONS_PAT != ''. В Gitea act_runner такая проверка секрета в условии шага часто всегда ложна, из‑за этого логин всегда skipped. Сейчас условие только docker_push == 'true' (всегда при нормальном шаге Prepare), пароль: secrets.ACTIONS_PAT || gitea.token.
Если после правки docker login падает с 401/403 — выдайте job-токену или PAT право записи в Container Registry (в настройках Gitea / организации / репозитория, в зависимости от версии).
Если gitea.token в выражениях недоступен, в ci.yaml замените пароль на ${{ secrets.ACTIONS_PAT || github.token }}.
Имена образов и теги
Формат:
git.shts.su/<owner_lowercase>/<имя>:<тег>
где <имя> — одно из: evobgp-api, evobgp-all, evobgp-scheduler, evobgp-ingest, evobgp-render, evobgp-deploy, evobgp-node, evobgp-web, evobgp-web-all (UI с прокси на evobgp-all для профиля Compose microvps-full), evobgp-agent, evobgp-bird2.
Теги: latest, короткий SHA (7 символов), sha-<полный_commit_sha>.
Пример pull:
docker pull git.shts.su/myuser/evobgp-api:latest
Полная таблица образов, тегов, ссылок на страницы пакетов в Gitea и минимальный docker run для сервера без сборки — в docs/quickstart.md (раздел «Готовые образы без сборки»).
Убедитесь, что в Gitea включены пакеты (Container Registry) и у токена есть права на создание/обновление образов. Другой хост реестра — правьте registry: и префикс IMG= в ci.yaml.
Примечания
- Сборка с платформой
linux/amd64. При необходимости добавьтеlinux/arm64и multi-arch вdocker buildx build. - Для PR job docker-images не выполняется (только push в main/master), чтобы не публиковать образы из чужих форков без явной политики.