Выбор ветки с помощью bencher run


Существует несколько способов установки ветки проекта в подкоманде bencher run CLI. Если никакие из этих опций или флагов не используются, то в качестве ветки по умолчанию используется main.


--branch <BRANCH>


Самый простой способ - установить опцию --branch или переменную окружения BENCHER_BRANCH на слаг или UUID уже существующей ветки. Если оба определены, то опция --branch имеет приоритет перед переменной окружения BENCHER_BRANCH.

Однако, если оба этих элемента отсутствуют или предоставленное значение недействительно, то команда bencher run выдаст ошибку. Это не самый удобный вариант в средах CI/CD, где постоянно появляются новые ветки. Вместо использования --branch или переменной окружения BENCHER_BRANCH есть опция --if-branch.


--if-branch <BRANCH_NAME>


Опция --if-branch ожидает в качестве аргумента имя ветки и осуществляет запрос, чтобы проверить, существует ли одна ветка с этим именем. Если обнаружена ровно одна ветка, то bencher run продолжает работу с использованием этой ветки. В противном случае bencher run просто записывает лог и успешно завершает работу.

Например, если существует main, то использование --if-branch main найдет его. Затем bencher run продолжит работу, используя main.

Опция --branch конфликтует с опцией --if-branch, но переменная окружения BENCHER_BRANCH имеет приоритет над опцией --if-branch.


🐰 Примечание: Всегда, когда используются переменные окружения, они должны быть заключены в двойные кавычки (например, --if-branch "$MY_ENV_VAR").


--else-if-branch <BRANCH_NAME>


Часто, при работе с ветками функционала, было бы полезно иметь исторические данные из родительской/базовой ветки. Именно здесь появляется опция --else-if-branch. Опция --else-if-branch ожидает другой аргумент с именем ветки. Если --if-branch не удалось, то --else-if-branch осуществляет запрос, чтобы проверить, существует ли одна ветка с этим именем. Если обнаружена ровно одна ветка, то все данные и пороги с этой исходной ветки будут скопированы в новую созданную ветку с именем, указанным --if-branch.

Например, если feature_branch еще не существует, но main существует и имеет исторические данные. Тогда использование --if-branch feature_branch --else-if-branch main создаст новую ветку с именем feature_branch, и она будет содержать копию всех данных и порогов из main. Затем bencher run продолжит работу, используя feature_branch.

Также возможно использование нескольких опций --else-if-branch. Например, если mia_branch не существует, то --if-branch feature_branch --else-if-branch mia_branch --else-if-branch main будет работать так же, как и предыдущий пример, копируя все данные и пороги из main и продолжая работу.

Если --if-branch выполнился успешно, то --else-if-branch никогда не запускается, и если оба --if-branch и --else-if-branch не удалось, bencher run просто записывает лог и успешно завершает работу.


🐰 Примечание: Всегда, когда используются переменные окружения, они должны быть заключены в двойные кавычки (например, --else-if-branch "$MY_ENV_VAR").


--else-branch


Чтобы гарантировать сохранение метрик из выполнения во всех случаях, есть флаг --else-branch. Флаг --else-branch не принимает аргументы. Если --if-branch не удалось, то --else-branch просто создает новую ветку с именем, указанным --if-branch.

Например, если feature_branch еще не существует. Тогда использование --if-branch feature_branch --else-branch создаст новую ветку с именем feature_branch, и в ней не будет исходных данных и порогов. Затем bencher run продолжит работу, используя feature_branch.

Также возможно связать все три флага вместе: --if-branch, --else-if-branch и --else-branch. Например, --if-branch feature_branch --else-if-branch main --else-branch.

Если --if-branch выполнился успешно, то --else-branch никогда не запускается, и также, если --if-else-branch выполнится успешно, то --else-branch никогда не запускается. И от --else-branch ожидается, что он всегда успешно выполняется и завершается.


--endif-branch


Флаг --endif-branch работает как опциональный флаг noop, обозначающий конец оператора --if-branch.

Возможно связать все четыре флага вместе: --if-branch, --else-if-branch, --else-branch и --endif-branch. Например, --if-branch feature_branch --else-if-branch "$MY_ENV_VAR" --else-branch --endif-branch.



🐰 Поздравляем! Вы изучили всё о выборе ветки! 🎉


Продолжайте: Адаптеры для прогонов бенчмарков ➡

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