После переезда 30.08 `secrets.DEPLOY_HOST` станет указывать на Selectel —
и рабочее дерево /opt/gendesign на Beget перестанет обновляться совсем.
Молча: ни ошибки, ни падения пайплайна.
А оттуда на Beget продолжат работать:
- cron-скрипты бэкапов (backup.sh, backup-forgejo.sh,
check-backup-staleness.sh, lib-backup.sh, docker-prune.sh)
- docker-compose.prod.yml для Forgejo / GlitchTip / CouchDB
- Caddyfile + caddy/sites/infra.caddy — единственный публичный вход
для git / errors / obsidian (#3062)
Любая будущая правка этих файлов легла бы в main и никогда не доехала до
машины, которая их исполняет. Это класс #2887 («скрипт запускается по
cron из /opt/gendesign, куда попадает только через жёсткую
пересинхронизацию дерева на шаге деплоя»), но не на уровне одного файла,
а на уровне целого хоста.
Отдельный workflow, а не job в deploy.yml: разные адресаты и разные
вердикты — «выкатили продукт на Selectel» и «синхронизировали инфру на
Beget» независимы, и падение второго не должно читаться как неудавшийся
деплой продукта. Триггеры тоже разные: инфра-хосту не нужны пересборки
backend/frontend.
ИНЕРТЕН, пока не задан INFRA_DEPLOY_HOST. Сегодня Beget и есть
DEPLOY_HOST, второй проход по тому же хосту был бы лишним и мог бы
состязаться с основным деплоем за докер-демон (#2950). Включается одной
настройкой в момент, когда хосты разъедутся.
Намеренно НЕ делает: прун образов (конкурирует за leases докер-демона,
#2950) и перезапуск Forgejo/GlitchTip/CouchDB (правка ops-скрипта не
повод ронять git). Caddy — reload, а не recreate: невалидный конфиг
откажет громко, старый продолжит работать.
Проверено: YAML разбирается, триггеры и paths те, что задуманы, шагов 2;
гейт прогнан обеими ветками (пустой секрет -> enabled=false, заданный ->
enabled=true).
Refs #3059, #3057, #3029