Концепции
Интеграция с Git
Подключите репозиторий, синхронизируйте тесты в рабочее пространство и получайте commit status и комментарии в PR/MR по каждому прогону
Обзор
Храните скрипты тестов там, где они живут, — в Git, а perfscale подтянет их
в рабочее пространство. Подключите репозиторий в Settings → Git
Repositories, нажмите Sync — и найденные файлы станут тестами:
.js-скрипты синхронизируются как k6-тесты, нативные .yaml-определения —
как тесты нативного step-движка.
Синк — это снимок: файлы копируются в тесты в этот момент, и каждый
прогон выполняет снимок, — так что успешный прогон воспроизводим, даже если
ветка уехала вперёд. Синхронизация сознательно ручная: кнопка Sync в
консоли или инструмент sync_git_repo MCP-сервера. Автосинка по push нет —
force-push никогда молча не поменяет то, что выполнит сегодняшний
ночной прогон.
Репозитории подключаются по персональному токену доступа (PAT) или SSH. Формы редактирования подключённого репозитория нет — чтобы поменять флаги, удалите его и добавьте заново.
Self-managed и enterprise-инстансы
По умолчанию подключение fail-closed ко всему непубличному: SSRF-гард
отклоняет приватные и loopback-адреса, открытый http:// запрещён, а
TLS-сертификаты проверяются. Для инстансов, которым это легитимно нужно, —
скажем, managed GitLab на VDS в приватной сети — в форме подключения есть
три явных флага, каждый выключен по умолчанию и каждый показан с
предупреждением в UI:
| Флаг | Что разрешает | По умолчанию |
|---|---|---|
allow_private_net | Приватные / loopback адреса репозитория. Адрес cloud metadata 169.254.169.254 блокируется всегда, независимо от флага | выкл |
allow_http | Клонирование по открытому http:// | выкл |
tls_skip_verify | Не проверять TLS-сертификат (self-signed) | выкл |
Включайте только те флаги, которые реально требует ваша сеть, — каждый расширяет то, до чего control plane может достучаться.
Уведомления о прогонах
Два opt-in тоггла при подключении отправляют результаты прогонов обратно в ваш репозиторий — работают только для тестов, синхронизированных из Git:
- Commit status (
notify_commit_status) — ставит commit status на sha последнего синка через GitHub Statuses API или GitLab commit status с контекстом/именемperfscale/load-test:passedпревращается в success, всё остальное — в failure. - Комментарии в PR/MR (
notify_pr_comments) — комментирует открытый pull/merge request ветки метриками прогона (p95/p99, доля ошибок, RPS) со ссылкой на прогон. Комментарий обновляется на месте — один слот на репозиторий и ветку, так что последний прогон перезаписывает предыдущий комментарий вместо накопления.
Уведомления дедуплицируются по sha синка (last_notified_sha): один цикл
уведомлений на sha — без спама, когда финиширует несколько тестов из одного
синка.
Требования и детали:
- Нужен PAT — тот же токен, что используется для клонирования (token
auth). Токенам GitHub нужен scope
repo(statuses + comments), токенам GitLab — scopeapi. Репозитории, подключённые по SSH или анонимно, уведомлений не шлют. - API base выводится из URL клонирования:
github.com→api.github.com; любой другой хост GitHub →https://<host>/api/v3(GitHub Enterprise Server); GitLab →https://<host>/api/v4. Полеapi_base_urlпереопределяет выведенное значение, если ваша схема отличается.
Дальше
- Интеграция с CI/CD — GitHub Action, шаблоны GitLab CI и запуски через API.
- Тесты и задачи — во что превращается синхронизированный файл.
- MCP-сервер и API-токены —
sync_git_repoи остальной набор инструментов.