Обзор
CI-конвейеры
perfscale изначально работает в неинтерактивном (headless) режиме, поэтому
он напрямую встраивается в CI-конвейер: сводка запуска выводится в stdout,
код завершения управляет исходом задания, а --summary-export записывает
машиночитаемый JSON (или Markdown-таблицу для интерфейса сводки задания)
для последующих шагов.
GitHub Actions
Официальный composite action —
Perfscale/github-action —
устанавливает закреплённый релиз perfscale (с проверкой контрольной суммы по
файлу sha256sums.txt из релиза), запускает ваш тест, выводит таблицу
метрик в сводку задания (job summary) и упаковывает сводку + метрики в
zip-артефакт:
- uses: Perfscale/github-action@v1
id: loadtest
with:
file: test.yaml # native engine; or: k6 / locust / jmeter
config: config.yaml
- uses: actions/upload-artifact@v4
with:
name: perfscale-output
path: ${{ steps.loadtest.outputs.output-file }}
Один входной параметр на движок — k6, locust, jmeter или file
(нативный) — соответствует соответствующему флагу perfscale run. Установка
бинарных файлов движков остаётся на ответственности workflow (action
устанавливает только сам perfscale): k6 и locust ставятся одним пакетом,
для JMeter нужна Java (предустановлена на раннерах, размещаемых GitHub)
плюс tar-архив дистрибутива — в README action есть готовый шаг установки,
который можно просто скопировать.
Полезные выходные данные для проверок (gating): summary-json (запросы,
RPS, перцентили задержки, доля ошибок + метаданные движка/VU/длительности)
и exit-code:
- name: Gate on p95
run: |
p95=$(jq '.summary.p95_ms' "${{ steps.loadtest.outputs.summary-json }}")
awk "BEGIN { exit !(${p95} < 500) }" || { echo '::error::p95 over budget'; exit 1; }
Живое демо: Perfscale/perfscale-demo — публичный репозиторий-песочница: каждый push запускает нативный движок и JMeter против локальной цели и публикует таблицы сводки задания и артефакты, так что вы можете увидеть результат, ничего не настраивая.
GitLab CI
Для GitLab есть репозиторий с шаблонами —
Perfscale/gitlab-ci — с
готовыми include-файлами .gitlab-ci.yml и примерами для тех же движков.
Любой другой CI
Плагин не нужен — установите бинарный файл и запустите:
curl -fsSL https://github.com/Perfscale/perfscale/releases/latest/download/perfscale-linux-amd64 \
-o perfscale && chmod +x perfscale
./perfscale run -f test.yaml -c config.yaml \
--summary-export summary.json
Коды завершения повторяют коды CLI: 0 — запуск выполнен (отдельные
неудачные запросы/проверки на это не влияют — для gating используйте
summary.json), 1 — запуск не удалось выполнить, 2 — неверные
аргументы. Одно сознательное исключение: нарушение порога
std/thresholds@v1 с severity: fail завершает процесс с ошибкой после
экспорта сводки, поэтому CI «краснеет» при нарушении SLO.