Skip to content

fix(deploy): deploys were silent no-ops (hosts: vds never matched)#53

Merged
shpaker merged 1 commit into
mainfrom
fix/ansible-host-pattern
Jul 8, 2026
Merged

fix(deploy): deploys were silent no-ops (hosts: vds never matched)#53
shpaker merged 1 commit into
mainfrom
fix/ansible-host-pattern

Conversation

@shpaker

@shpaker shpaker commented Jul 8, 2026

Copy link
Copy Markdown
Owner

Что не так

Бот на сервере запущен, но не доставляет посты: тянет ленты (habr/opennet, HTTP 200), но каждый тик падает —

File ".../feedforbot/cache.py", line 101, in read
    articles = tuple(ArticleModel(**data) for data in json.loads(contents))
json.decoder.JSONDecodeError: Expecting value: line 87686 column 5

Файловый кэш (~13.5 MB) побился, когда диск забился под 100 % (запись оборвалась). Плюс сервер до сих пор на 4.0.0rc7 со старым files-cache setup, хотя выходили релизы 5.0.0 / 5.1.0.

Первопричина: деплой давно молча ничего не делает. После удаления tmfeed/inventory.ini CI передаёт хост инлайном (-i "88.218.64.96,") → он попадает в неявную группу all, а плейбук объявлен hosts: vds:

[WARNING]: Could not match supplied host pattern, ignoring: vds
skipping: no hosts matched
PLAY RECAP  (пусто)

Playbook пропускается, job рапортует success. Так «деплоились» 5.0.0, 5.1.0 и предыдущий PR #52 — на сервер ничего не попадало.

Фикс

  • tmfeed/deploy.playbook.yml: hosts: vdshosts: all (инлайн-хост из CI всегда попадает в all).
  • .github/workflows/deploy.yml: падать, если DEPLOY_HOST/DEPLOY_USER пусты — чтобы деплой больше никогда не «проходил» вхолостую.

Что произойдёт при мерже

Деплой реально отработает: развернёт :latest (5.1.0) с redis-кэшем + --force-recreate, применит ротацию логов из #52. Новый redis-кэш пуст → первый прогон заполнит кэш без отправки (штатная защита от спама), затем возобновит доставку постов. Это чинит и падающие тики, и версию, и логи разом.

Проверка после деплоя

  • docker compose ps в /home/worker/feedforbotfeedforbot + feedforbot-redis, оба healthy.
  • версия 5.1.0; docker logs feedforbot — тики без scheduler_tick_error.
  • docker inspect feedforbot --format '{{.HostConfig.LogConfig.Config}}'max-size:10m.
  • свежие посты в @tmfeed.

The playbook declared 'hosts: vds', but since tmfeed/inventory.ini was
removed the CI passes the host inline (-i "<host>,"), which places it in
the implicit 'all' group — never 'vds'. Every deploy since then printed
'Could not match supplied host pattern, ignoring: vds / skipping: no
hosts matched' and exited 0, so releases 5.0.0/5.1.0 and the log-rotation
change never actually reached the server (stuck on 4.0.0rc7).

- deploy.playbook.yml: hosts: vds -> hosts: all.
- deploy.yml: fail fast if DEPLOY_HOST/DEPLOY_USER are empty, so a
  misconfigured target can never again pass as a silent no-op deploy.
@shpaker shpaker merged commit 05d8704 into main Jul 8, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant