Modified the CI workflow to include the `--allow=fs.read` flag for Docker build commands, allowing access to the repository context. Updated the `docker-bake.hcl` file to reflect the correct paths for Dockerfiles, ensuring consistency with the new structure. Adjusted the README to clarify the changes in build commands and paths, enhancing overall documentation accuracy.
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), чтобы не публиковать образы из чужих форков без явной политики.