73 lines
2.6 KiB
Markdown
73 lines
2.6 KiB
Markdown
# Operations, CI/CD, and Quality Assurance
|
||
|
||
## 8. Quality gates after `cc9e4a0`
|
||
|
||
Коммит усилил тестовое покрытие worktime path и сделал часть operational failures явными.
|
||
|
||
## Worktime tests
|
||
|
||
Новые/расширенные тесты:
|
||
|
||
```bash
|
||
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 увеличен:
|
||
|
||
```bash
|
||
WORKTIME_MANAGEMENT_WARM_TIMEOUT_SECONDS=60
|
||
```
|
||
|
||
Это снижает ложные перезапуски при тяжелой сборке management report.
|
||
|
||
## UI bridge service hardening
|
||
|
||
`aw-server/aw-worktime-ui-bridge.service` теперь использует:
|
||
|
||
```ini
|
||
StartLimitBurst=20
|
||
StartLimitIntervalSec=120
|
||
```
|
||
|
||
Большее значение `StartLimitBurst` нужно для recovery-сценариев после перезапуска AW server или временной недоступности buckets: bridge может несколько раз стартовать, пока API прогревается, не попадая сразу в systemd start-limit.
|
||
|
||
## Ansible validation
|
||
|
||
Перед rollout:
|
||
|
||
```bash
|
||
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 обязательно дополнительно проверить наличие:
|
||
|
||
```bash
|
||
AW_WORKTIME_INFLUX_TOKEN
|
||
AW_DLP_INFLUX_TOKEN
|
||
```
|
||
|
||
Playbook теперь не должен скрывать ошибку записи в Influx: если exporter не может писать в `aw_metrics`, deploy считается неуспешным.
|