Как использовать 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
  1. Создайте файл GitLab CI/CD. (например, .gitlab-ci.yml)
  2. Создайте задание GitLab CI/CD. (например, benchmark_target_branch)
  3. Запустите if если пайплайн был вызван push в ветвь main. Смотрите документацию по правилам GitLab CI/CD и документацию по предопределенным переменным GitLab CI/CD для полного обзора. (например, rules: - if: ...)
  4. Установите image в котором будет выполняться задание. Смотрите документацию по image GitLab CI/CD для полного обзора. (например, image: debian:bullseye)
  5. Установите CLI Bencher с помощью удобного скрипта. (например, before_script: ...)
  6. Используйте подкоманду CLI bencher run для запуска бенчмарков вашей ветви main. Смотрите подкоманду CLI bencher run для полного обзора. (например, bencher run)
  7. Установите опцию --project в слаг проекта. Смотрите документацию по --project для получения дополнительной информации. (например, --project save-walter-white-1234abcd)
  8. Установите опцию --token в маскированную переменную среды BENCHER_API_TOKEN. Смотрите документацию по --token для получения дополнительной информации. (например, --token "$BENCHER_API_TOKEN")
  9. Установите опцию --branch в имя ветви. Смотрите выбор ветви для полного обзора. (например, --branch main)
  10. Установите опцию --testbed в имя тестового стенда. Это должно совпадать с машиной, выбранной в image. Смотрите документацию по --testbed для получения дополнительной информации. (например, --testbed debian:bullseye)
  11. Установите опцию --adapter в нужный адаптер для замеров производительности. Смотрите адаптеры для замеров производительности для полного обзора. (например, --adapter json)
  12. Установите флаг --err для прерывания команды, если было сгенерировано оповещение. Смотрите Пороги и Оповещения для полного обзора. (например, --err)
  13. Укажите аргументы команды для бенчмарка. Смотрите аргумент команды для полного обзора. (например, 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
  1. Создайте или обновите файл GitLab CI/CD. (напр.: .gitlab-ci.yml)
  2. Создайте задачу GitLab CI/CD. (напр.: benchmark_mr_branch)
  3. Запустите if, если конвейер был вызван merge_request_event. См. документацию по правилам GitLab CI/CD и документацию по предопределённым переменным GitLab CI/CD для полного обзора. (напр.: rules: - if: ...)
  4. Установите image, в котором будет выполняться задача. См. документацию по image в GitLab CI/CD для полного обзора. (напр.: image: debian:bullseye)
  5. Установите Bencher CLI, используя удобный скрипт. (напр.: before_script: ...)
  6. Используйте субкоманду bencher run для выполнения тестов производительности вашей ветки запроса на слияние. См. субкоманду bencher run CLI для полного обзора. (напр.: bencher run)
  7. Установите опцию --project в идентификатор проекта. Подробности см. в документации по опции --project. (напр.: --project save-walter-white-1234abcd)
  8. Установите опцию --token в маскированную переменную окружения BENCHER_API_TOKEN. Подробности см. в документации по опции --token. (напр.: --token "$BENCHER_API_TOKEN")
  9. Установите опцию --branch в имя ветки MR с использованием предопределённой переменной GitLab CI/CD. См. выбор ветки для полного обзора. (напр.: --branch "$CI_COMMIT_REF_NAME")
  10. Установите опцию --branch-start-point в начальную точку целевой ветки MR с использованием предопределённой переменной GitLab CI/CD. См. выбор начальной точки ветки для полного обзора. (напр.: --branch-start-point "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME")
  11. Установите опцию --branch-start-point-hash в хэш начальной точки целевой ветки MR с использованием предопределённой переменной GitLab CI/CD. См. выбор хэша начальной точки ветки для полного обзора. (напр.: --branch-start-point-hash "$CI_MERGE_REQUEST_TARGET_BRANCH_SHA")
  12. Установите флаг --branch-reset, чтобы всегда сбрасывать ветку до начальной точки. Это предотвратит дрейф данных тестов производительности. См. сброс ветки для полного обзора. (напр.: --branch-reset)
  13. Установите опцию --testbed в имя тестовика. Это, вероятно, должно совпадать с выбранной машиной в image. Подробности см. в документации по опции --testbed. (напр.: --testbed debian:bullseye)
  14. Установите опцию --adapter в желаемый адаптер тестов производительности. См. адаптеры тестов производительности для полного обзора. (напр.: --adapter json)
  15. Установите флаг --err, чтобы команда завершилась с ошибкой при генерации оповещения. См. пороги и оповещения для полного обзора. (напр.: --err)
  16. Укажите аргументы команды тестов производительности. См. команду тестов производительности для полного обзора. (напр.: bencher mock)


🐰 Поздравляем! Вы научились использовать Bencher в GitLab CI/CD! 🎉


Продолжайте: Обзор сравнительного тестирования ➡

🤖 Этот документ был автоматически создан OpenAI GPT-4. Оно может быть неточным и содержать ошибки. Если вы обнаружите какие-либо ошибки, откройте проблему на GitHub.


Published: Fri, October 27, 2023 at 8:40:00 AM UTC | Last Updated: Mon, April 1, 2024 at 7:00:00 AM UTC