fix(deploy-metrics): пересоздавать alloy после выката конфига + гейт по иноду (#3380) #3381
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
ИРД
вторичка
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#3381
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/3380-deploy-metrics-alloy-recreate"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #3380.
Дефект. Конфиг Alloy — bind-mount ОДНОГО файла (
ops/metrics/alloy/alloy-*.alloy -> /etc/alloy/config.alloy);git reset --hardв деплое пишет файл новым инодом, аdocker compose up -dизменения сервиса не видит и контейнер не пересоздаёт. Прод 06.09: после success-деплоя #3377 контейнер на Beget держал инод от 26.08 (grep -c apikey= 0 в контейнере при 1 на хосте) — второй слой маскировки не работал до ручногоdocker restart.Фикс (оба agent-шага, apps и infra): после
up -d—up -d --force-recreate alloyс теми же env-префиксами (${METRICS_ROLE:?}/${METRICS_ALLOY_CONFIG:?}обязательны в компоузе); позиции чтения журнала — в volumealloy_data, пересоздание их не трогает. Затем гейт по значению: инод файла на хосте == инод/etc/alloy/config.alloyвнутри контейнера, иначе::error::и красный деплой. Имя файла в гейте литералом (переменная задана только префиксом compose-команды; приset -u$METRICS_ALLOY_CONFIGдал бы unbound).statв образеgrafana/alloy:v1.6.1есть — проверено на проде (docker exec gendesign-alloy stat -c %i …в #3377).Проверки: yaml.safe_load rc=0;
bash -nтрёх script-блоков rc=0;scripts/check-workflow-ports.pyиscripts/check-compose-ambiguous-hosts.py(+--selftest) rc=0; pre-commit hooks passed.Приёмка на проде (сам мерж и есть проба): мерж триггерит
deploy-metrics(path.forgejo/workflows/deploy-metrics.yml) → на обоих хостах гейт должен пройти,docker inspect gendesign-alloy .Createdобновится, инод в контейнере == на хосте без ручного рестарта.up -dне перечитывает одно-файловый bind-mount конфига Alloy (Beget читал конфиг 26.08 после успешного деплоя #3377) #3380