2.6 KiB
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 считается неуспешным.