Files
EvoBGP/.gitea
Denozordec 54eaad3f78
CI / changes (push) Successful in 5s
CI / openapi (push) Has been skipped
CI / go (push) Successful in 19s
CI / docker-web (deploy/docker/evobgp-web/Dockerfile, , evobgp-web) (push) Successful in 1m6s
CI / docker-web (deploy/docker/evobgp-web/Dockerfile, evobgp-all, evobgp-web-all) (push) Successful in 1m1s
CI / docker-bird (push) Successful in 38s
CI / bird2 (push) Successful in 16s
CI / docker-go (deploy/docker/evobgp-agent/Dockerfile, , evobgp-agent) (push) Successful in 1m1s
CI / docker-go (evobgp-all, 1, deploy/docker/gobinary/Dockerfile, , evobgp-all) (push) Successful in 1m32s
CI / docker-go (evobgp-deploy, 0, deploy/docker/gobinary/Dockerfile, , evobgp-deploy) (push) Has been cancelled
CI / docker-go (evobgp-ingest, 0, deploy/docker/gobinary/Dockerfile, , evobgp-ingest) (push) Has been cancelled
CI / docker-go (evobgp-node, 0, deploy/docker/gobinary/Dockerfile, , evobgp-node) (push) Has been cancelled
CI / docker-go (evobgp-render, 0, deploy/docker/gobinary/Dockerfile, , evobgp-render) (push) Has been cancelled
CI / docker-go (evobgp-api, 1, deploy/docker/gobinary/Dockerfile, , evobgp-api) (push) Has been cancelled
CI / docker-go (evobgp-scheduler, 0, deploy/docker/gobinary/Dockerfile, , evobgp-scheduler) (push) Has been cancelled
refactor: enhance CI workflow for granular change detection by module and improve idempotency key generation in API client. Update job flags and conditions for better handling of file changes across different components.
2026-04-05 22:17:29 +07:00
..

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 через apt-get на самом runner и вызывает 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), чтобы не публиковать образы из чужих форков без явной политики.