Files
freeradius/AGENTS.md
Georg K 99e1245ed3 feat: migrate to Gitea, productize Helm chart, unify version
- CI: replace GitLab pipeline with Gitea Actions (.gitea/workflows/release.yaml);
  publish .deb/image/hosted/chart to Gitea registries; gate image+hosted on .deb
  (needs + registry pre-check)
- drop connectone/Nexus; apt now from the Gitea Debian registry
- single version source (/VERSION=3.2.8); CI enforces .env/Chart consistency
- restructure: build/->packaging/deb, root Dockerfile->packaging/image,
  hosted/->packaging/hosted, .kube/->charts/freeradius
- Helm chart: documented values, DB password via Secret/$ENV, configurable
  scheduling/persistence; remove plaintext creds and hostPath PV
- gitignore *.env_cnf; docs for hosted (RU)/helm/root + agent KB sync

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-12 05:45:10 +03:00

61 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AGENTS.md
## Что это
Репозиторий упаковки и развёртывания кастомной сборки FreeRADIUS 3.2.x для
hotspot/captive-portal сценариев. Прикладного кода нет: это сборочные Dockerfile,
shell-скрипты, Helm/k8s-манифесты и
конфиги FreeRADIUS. Профиль каркаса: infra-lite.
Главный контекст: [agent/INDEX.md](agent/INDEX.md). Читать перед любыми изменениями.
Сборка и поставка - через Gitea (`git.ahax86.ru`, owner `pub`): Debian-реестр для .deb,
container registry для образа, Helm-реестр для чарта, generic-пакет для hosted-бандла.
Nexus и GitLab больше не используются.
## Порядок чтения в начале сессии
1. `AGENTS.md` (этот файл).
2. `agent/INDEX.md` - назначение, артефакты, режимы развёртывания, версии, риски.
## Структура репозитория
```
VERSION ← единый источник версии FreeRADIUS (3.2.8)
.gitea/workflows/release.yaml ← ручной релиз (Gitea Actions): prepare/build-deb/build-image/package-hosted/package-helm
packaging/
deb/ ← сборка .deb из исходников FreeRADIUS + rlm_raw, upload в Debian-реестр Gitea
image/ ← рантайм-образ (Dockerfile + entrypoint.sh + local-noble.list); ставит .deb, печёт конфиг
hosted/ ← bare-metal/VM установка (install.sh, update.sh, systemd, cron, config)
config/ ← radiusd.conf, dictionary, clients.conf, mods-enabled/*, sites-enabled/*
.env / .env_cnf* ← версия пакета и подстановки (хосты, порты, креды БД)
charts/
freeradius/ ← продуктовый Helm-чарт (Deployment, ConfigMap, Secret, PVC, Service)
```
## Инструменты и команды
- Сборка/выкладка - только через Gitea Actions (`.gitea/workflows/release.yaml`, `workflow_dispatch`).
- Версия задаётся в `VERSION`; CI выводит из неё тег/пин/appVersion и падает при рассинхроне.
- Локальная сборка .deb: `docker build packaging/deb -f packaging/deb/Dockerfile --build-arg RADIUS_TAG=release_3_2_8 --build-arg RLM_RAW_BRANCH=v3.2.4 -t freerad-builder:3.2.8`
- Локальная сборка образа: `docker build -f packaging/image/Dockerfile --build-arg PKG_VERSION=3.2.8+git -t freeradius:3.2.8 .` (контекст = корень).
- Тест hosted: `cd packaging/hosted && docker build . -t hosted:test -f Dockerfile`
- Установка на ноду (bare-metal): `packaging/hosted/install.sh` (root), обновление версии: `packaging/hosted/update.sh`.
- Чарт: `helm lint charts/freeradius --set db.password=test`, `helm template charts/freeradius --set db.password=test`.
- Линтеров/тестов кода в репозитории нет.
## Правила репо
1. Ничего не публиковать (push, PR, CI-стейдж, деплой) без явной команды пользователя.
2. `git add` строго поимённо. Никогда `git add .` или `git add -A`.
3. `.env` / `.env_cnf` не читать целиком и не коммитить - там креды БД. Проверять
переменную через grep по `^VAR=`. `.env_cnf` хранит секреты и не должен попадать в git.
4. Деструктивные действия с прод-нодами, БД и k8s - только с явного подтверждения.
5. Изменился конфиг, версия, хост или инвариант - синхронно отразить в `agent/INDEX.md`.
6. Долгоживущие решения фиксируются в `agent/INDEX.md`. Журнал сессий не ведётся по умолчанию.
7. Документация краткая и строгая: без галлюцинаций, факты берём из кода и конфигов.
## Язык
Отвечать по-русски, кратко, без длинных тире.