netpulse-migrate замість PowerShell-скрипта: у контейнері немає ані psql, ані PowerShell, а тягнути клієнт Postgres в образ заради одного запуску — це половина дистрибутива на порожньому місці. Міграції вшиті через embed і переїхали в server/migrations: embed не бачить нічого за межами кореня свого модуля, а міграції поруч із бінарником, який їх накочує, не можуть розійтися версіями. Накочування під advisory-блокуванням: два інстанси при rolling update інакше застосували б ту саму міграцію двічі. Кожен файл в одній транзакції разом із записом у schema_migrations; виняток — continuous aggregates, які TimescaleDB забороняє в транзакції. Змінена вже застосована міграція зупиняє запуск: у різних інсталяціях інакше опиниться різна схема під одним номером. Перевірено на чистій базі: 23 міграції, 101 таблиця, повторний запуск каже «схема актуальна». Веб віддає сам API через embed: на self-hosted це прибирає з інструкції встановлення цілий компонент. Три політики кешування — назавжди для assets із хешем у імені, ніколи для index.html, коротко для решти. Знайдено живим прогоном: невідомий шлях під /api/ віддавав 200 з index.html, і клієнт падав на розборі HTML як JSON замість чесного 404. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
38 lines
793 B
Text
38 lines
793 B
Text
# Збірки
|
||
/bin/
|
||
/dist/
|
||
*.exe
|
||
*.test
|
||
netpulse-agent
|
||
netpulse-server
|
||
|
||
# Секрети й локальні налаштування
|
||
.env
|
||
.env.*
|
||
!.env.example
|
||
*.pem
|
||
*.key
|
||
!testdata/**/*.key
|
||
|
||
# Згенерований TypeScript — регенерується з proto, на відміну від gen/go,
|
||
# який комітиться, щоб збірка агента не залежала від наявності buf.
|
||
/gen/ts/
|
||
|
||
# Інструменти
|
||
.idea/
|
||
.vscode/
|
||
*.swp
|
||
.DS_Store
|
||
|
||
# Дані локального стенду
|
||
/data/
|
||
/var/
|
||
|
||
# Фронтенд
|
||
/web/node_modules/
|
||
/web/dist/
|
||
|
||
# Зібраний фронтенд, вшитий у бінарник API. Кладеться збіркою.
|
||
server/webui/dist/*
|
||
!server/webui/dist/index.html
|
||
!server/webui/dist/.gitignore
|