Концепции

Интеграция с 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 — scope api. Репозитории, подключённые по SSH или анонимно, уведомлений не шлют.
  • API base выводится из URL клонирования: github.comapi.github.com; любой другой хост GitHub → https://<host>/api/v3 (GitHub Enterprise Server); GitLab → https://<host>/api/v4. Поле api_base_url переопределяет выведенное значение, если ваша схема отличается.

Дальше