Как использовать 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)

Запросы на слияние

Чтобы отслеживать регрессию производительности в запросах на слияние, вам необходимо будет запускать свои бенчмарки на MR. Ниже приведенный пример должен использоваться только для веток в том же репозитории.

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" \
--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. Смотрите документацию rules 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 для запуска ваших бенчмарков ветки запроса на слияние. Смотрите подкоманду 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 для имени ветки 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. Установите параметр --testbed для имени тестовой среды. Это, вероятно, должно соответствовать машине, выбранной в image. Смотрите документацию --tested для подробностей. (например: --testbed debian:bullseye)
  13. Установите параметр --adapter для выбора адаптера системы тестирования производительности. Смотрите адаптеры системы тестирования производительности для полного обзора. (например: --adapter json)
  14. Установите флаг --err для провала команды, если сгенерировано предупреждение. Смотрите Пороги и предупреждения для полного обзора. (например: --err)
  15. Укажите аргументы команды бенчмарка. Смотрите аргумент команды для полного обзора. (например: 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