Files
AWatch-rus/docs/wiki/Operations-CI-CD-and-Quality-Assurance.md
T

2.6 KiB
Raw Blame History

Operations, CI/CD, and Quality Assurance

8. Quality gates after cc9e4a0

Коммит усилил тестовое покрытие worktime path и сделал часть operational failures явными.

Worktime tests

Новые/расширенные тесты:

python3 -m pytest aw-server/test_aw_worktime_api.py aw-server/test_aw_worktime_ui_bridge.py

Покрываются:

  • in-process events cache;
  • management report build locks;
  • trend building с precomputed_payloads;
  • foreground context fallback в UI bridge;
  • active session id detection;
  • нормализация watcher/window events.

Ожидаемый результат для текущего набора: 28 passed.

Autoheal changes

aw-server/aw-worktime-autoheal.sh изменен так, чтобы management warm-up не был обязательным probe для общей доступности worktime API.

Текущая логика:

  • обязательные probes проверяют health/report path;
  • если worktime API недоступен, autoheal перезапускает aw-worktime-api.service;
  • management warm выполняется отдельно;
  • failure management warm логируется, но не переводит весь health path в hard failure.

Timeout management warm увеличен:

WORKTIME_MANAGEMENT_WARM_TIMEOUT_SECONDS=60

Это снижает ложные перезапуски при тяжелой сборке management report.

UI bridge service hardening

aw-server/aw-worktime-ui-bridge.service теперь использует:

StartLimitBurst=20
StartLimitIntervalSec=120

Большее значение StartLimitBurst нужно для recovery-сценариев после перезапуска AW server или временной недоступности buckets: bridge может несколько раз стартовать, пока API прогревается, не попадая сразу в systemd start-limit.

Ansible validation

Перед rollout:

ansible-playbook --syntax-check ansible/deploy_aw_server.yml -i ansible/inventory.ini
ansible-playbook --syntax-check ansible/deploy_aw_windows.yml -i ansible/inventory.ini

Для Grafana exporters обязательно дополнительно проверить наличие:

AW_WORKTIME_INFLUX_TOKEN
AW_DLP_INFLUX_TOKEN

Playbook теперь не должен скрывать ошибку записи в Influx: если exporter не может писать в aw_metrics, deploy считается неуспешным.