Как использовать Bencher в GitLab CI/CD
В зависимости от вашего сценария использования, вы можете настроить Непрерывное бенчмаркинг в GitLab CI/CD для:
🐰 Убедитесь, что вы создали токен API и установили его как скрытую переменную с именем
BENCHER_API_TOKEN
перед тем как продолжить! Перейдите кВаш репозиторий -> Настройки -> CI/CD -> Переменные -> Развернуть -> Добавить переменную
. Ключ переменной должен бытьBENCHER_API_TOKEN
, а значение переменной - ваш токен API. Отметьте оба флажкаЗащитить переменную
иСкрыть переменную
.
Целевая ветвь
Угловым камнем Статистического Непрерывного Бенчмаркинга является наличие исторической базы для вашей целевой ветви. Затем эту историческую базу можно использовать для выявления регрессий производительности в запросах на слияние.
benchmark_target_branch: rules: - if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == "push" when: always image: debian:bullseye before_script: - curl --proto '=https' --tlsv1.2 -sSfL https://bencher.dev/download/install-cli.sh | sh script: - | bencher run \ --project save-walter-white-1234abcd \ --token "$BENCHER_API_TOKEN" \ --branch main \ --testbed debian:bullseye \ --adapter json \ --err \ bencher mock
- Создайте файл GitLab CI/CD.
(например,
.gitlab-ci.yml
) - Создайте задание GitLab CI/CD.
(например,
benchmark_target_branch
) - Запустите
if
если пайплайн был вызванpush
в ветвьmain
. Смотрите документацию поправилам
GitLab CI/CD и документацию по предопределенным переменным GitLab CI/CD для полного обзора. (например,rules: - if: ...
) - Установите
image
в котором будет выполняться задание. Смотрите документацию поimage
GitLab CI/CD для полного обзора. (например,image: debian:bullseye
) - Установите CLI Bencher с помощью удобного скрипта.
(например,
before_script: ...
) - Используйте подкоманду CLI
bencher run
для запуска бенчмарков вашей ветвиmain
. Смотрите подкоманду CLIbencher run
для полного обзора. (например,bencher run
) - Установите опцию
--project
в слаг проекта. Смотрите документацию по--project
для получения дополнительной информации. (например,--project save-walter-white-1234abcd
) - Установите опцию
--token
в маскированную переменную средыBENCHER_API_TOKEN
. Смотрите документацию по--token
для получения дополнительной информации. (например,--token "$BENCHER_API_TOKEN"
) - Установите опцию
--branch
в имя ветви. Смотрите выбор ветви для полного обзора. (например,--branch main
) - Установите опцию
--testbed
в имя тестового стенда. Это должно совпадать с машиной, выбранной вimage
. Смотрите документацию по--testbed
для получения дополнительной информации. (например,--testbed debian:bullseye
) - Установите опцию
--adapter
в нужный адаптер для замеров производительности. Смотрите адаптеры для замеров производительности для полного обзора. (например,--adapter json
) - Установите флаг
--err
для прерывания команды, если было сгенерировано оповещение. Смотрите Пороги и Оповещения для полного обзора. (например,--err
) - Укажите аргументы команды для бенчмарка.
Смотрите аргумент команды для полного обзора.
(например,
bencher mock
)
Запросы на слияние
Чтобы обнаружить регрессию производительности в запросах на слияние, вам нужно запустить ваши тесты производительности на запросах на слияние. Ниже приведенный пример должен использоваться только для веток внутри одного и того же репозитория.
benchmark_mr_branch: rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" when: always image: debian:bullseye before_script: - curl --proto '=https' --tlsv1.2 -sSfL https://bencher.dev/download/install-cli.sh | sh script: - | bencher run \ --project save-walter-white-1234abcd \ --token "$BENCHER_API_TOKEN" \ --branch "$CI_COMMIT_REF_NAME" \ --branch-start-point "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" \ --branch-start-point-hash "$CI_MERGE_REQUEST_TARGET_BRANCH_SHA" \ --branch-reset \ --testbed debian:bullseye \ --adapter json \ --err \ bencher mock
- Создайте или обновите файл GitLab CI/CD.
(напр.:
.gitlab-ci.yml
) - Создайте задачу GitLab CI/CD.
(напр.:
benchmark_mr_branch
) - Запустите
if
, если конвейер был вызванmerge_request_event
. См. документацию по правилам GitLab CI/CD и документацию по предопределённым переменным GitLab CI/CD для полного обзора. (напр.:rules: - if: ...
) - Установите
image
, в котором будет выполняться задача. См. документацию по image в GitLab CI/CD для полного обзора. (напр.:image: debian:bullseye
) - Установите Bencher CLI, используя удобный скрипт.
(напр.:
before_script: ...
) - Используйте субкоманду
bencher run
для выполнения тестов производительности вашей ветки запроса на слияние. См. субкомандуbencher run
CLI для полного обзора. (напр.:bencher run
) - Установите опцию
--project
в идентификатор проекта. Подробности см. в документации по опции--project
. (напр.:--project save-walter-white-1234abcd
) - Установите опцию
--token
в маскированную переменную окруженияBENCHER_API_TOKEN
. Подробности см. в документации по опции--token
. (напр.:--token "$BENCHER_API_TOKEN"
) - Установите опцию
--branch
в имя ветки MR с использованием предопределённой переменной GitLab CI/CD. См. выбор ветки для полного обзора. (напр.:--branch "$CI_COMMIT_REF_NAME"
) - Установите опцию
--branch-start-point
в начальную точку целевой ветки MR с использованием предопределённой переменной GitLab CI/CD. См. выбор начальной точки ветки для полного обзора. (напр.:--branch-start-point "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME"
) - Установите опцию
--branch-start-point-hash
в хэш начальной точки целевой ветки MR с использованием предопределённой переменной GitLab CI/CD. См. выбор хэша начальной точки ветки для полного обзора. (напр.:--branch-start-point-hash "$CI_MERGE_REQUEST_TARGET_BRANCH_SHA"
) - Установите флаг
--branch-reset
, чтобы всегда сбрасывать ветку до начальной точки. Это предотвратит дрейф данных тестов производительности. См. сброс ветки для полного обзора. (напр.:--branch-reset
) - Установите опцию
--testbed
в имя тестовика. Это, вероятно, должно совпадать с выбранной машиной вimage
. Подробности см. в документации по опции--testbed
. (напр.:--testbed debian:bullseye
) - Установите опцию
--adapter
в желаемый адаптер тестов производительности. См. адаптеры тестов производительности для полного обзора. (напр.:--adapter json
) - Установите флаг
--err
, чтобы команда завершилась с ошибкой при генерации оповещения. См. пороги и оповещения для полного обзора. (напр.:--err
) - Укажите аргументы команды тестов производительности.
См. команду тестов производительности для полного обзора.
(напр.:
bencher mock
)
🐰 Поздравляем! Вы научились использовать Bencher в GitLab CI/CD! 🎉