Выбор ветки с помощью bencher run
Существует несколько способов установки ветки проекта в подкоманде bencher run
CLI.
Если никакие из этих опций или флагов не используются, то в качестве ветки по умолчанию используется main
.
--branch
Самый простой способ - установить опцию --branch
или переменную окружения BENCHER_BRANCH
на слаг или UUID уже существующей ветки.
Если оба определены, то опция --branch
имеет приоритет перед переменной окружения BENCHER_BRANCH
.
Однако, если оба этих элемента отсутствуют или предоставленное значение недействительно, то команда bencher run
выдаст ошибку.
Это не самый удобный вариант в средах CI/CD, где постоянно появляются новые ветки.
Вместо использования --branch
или переменной окружения BENCHER_BRANCH
есть опция --if-branch
.
--if-branch
Опция --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
Часто, при работе с ветками функционала, было бы полезно иметь исторические данные из родительской/базовой ветки.
Именно здесь появляется опция --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
.
🐰 Поздравляем! Вы изучили всё о выборе ветки! 🎉