Zweigauswahl mit bencher run
Es gibt mehrere Möglichkeiten, den Projektzweig im bencher run
CLI-Unterbefehl festzulegen.
Wenn keine dieser Optionen oder Flags verwendet werden, dann wird main
als Standardzweig verwendet.
--branch
Die einfachste Methode besteht darin, die Option --branch
oder die Umgebungsvariable BENCHER_BRANCH
auf die eindeutige Bezeichnung oder UUID eines bereits existierenden Zweigs einzustellen.
Wenn beide definiert sind, hat die Option --branch
Vorrang vor der Umgebungsvariable BENCHER_BRANCH
.
Fehlen jedoch beide oder ist der bereitgestellte Wert ungültig, dann erzeugt der Befehl bencher run
einen Fehler.
Das ist nicht besonders praktisch in CI/CD-Umgebungen, wo ständig neue Zweige entstehen.
Anstelle von --branch
oder der Umgebungsvariable BENCHER_BRANCH
gibt es die Option --if-branch
.
--if-branch
Die Option --if-branch
erwartet ein Argument für den Zweignamen und prüft, ob genau ein Zweig mit diesem Namen existiert.
Wenn genau ein Zweig gefunden wird, dann wird bencher run
mit diesem Zweig fortgesetzt.
Ansonsten protokolliert bencher run
einfach und beendet erfolgreich.
Zum Beispiel, wenn main
existiert, dann würde --if-branch main
es finden. Dann würde bencher run
mit main
fortgesetzt.
Die Option --branch
steht in Konflikt mit der Option --if-branch
, aber die Umgebungsvariable BENCHER_BRANCH
hat Vorrang vor der Option --if-branch
.
🐰 Hinweis: Bei Verwendung von Umgebungsvariablen sollten diese in Anführungszeichen gesetzt werden (z.B.
--if-branch "$MY_ENV_VAR"
).
--else-if-branch
Oftmals, bei der Arbeit an Feature-Zweigen, wäre es hilfreich, historische Daten vom Eltern-/Basiszweig zu haben.
Hier kommt die Option --else-if-branch
ins Spiel.
Die Option --else-if-branch
erwartet ein weiteres Argument für den Zweignamen.
Wenn --if-branch
fehlschlägt, dann fragt --else-if-branch
ab, ob genau ein Zweig mit diesem Namen existiert.
Wenn genau ein Zweig gefunden wird, dann werden alle Daten und Schwellenwerte von diesem Ausgangspunktzweig auf einen neu erstellten Zweig mit dem Namen, der --if-branch
gegeben wurde, kopiert.
Zum Beispiel, wenn feature_branch
noch nicht existiert, aber main
existiert und hat historische Daten.
Dann würde --if-branch feature_branch --else-if-branch main
, einen neuen Zweig namens feature_branch
erstellen,
und es hätte eine Kopie aller Daten und Schwellenwerte von main
.
Dann würde bencher run
mit feature_branch
fortgesetzt.
Es ist auch möglich, mehrere --else-if-branch
Optionen zu verwenden.
Zum Beispiel, wenn mia_branch
nicht existiert, dann würde --if-branch feature_branch --else-if-branch mia_branch --else-if-branch main
effektiv genauso funktionieren wie das vorherige Beispiel, indem es alle Daten und Schwellenwerte von main
kopiert und fortsetzt.
Wenn die --if-branch
-Abfrage erfolgreich ist, wird --else-if-branch
nie ausgeführt, und wenn sowohl --if-branch
als auch --else-if-branch
fehlschlagen, protokolliert bencher run
einfach und beendet erfolgreich.
🐰 Hinweis: Bei Verwendung von Umgebungsvariablen sollten diese in Anführungszeichen gesetzt werden (z.B.
--else-if-branch "$MY_ENV_VAR"
).
--else-branch
Um in allen Fällen zu garantieren, dass die Metriken von einem Lauf gespeichert werden, gibt es das Flag --else-branch
.
Das Flag --else-branch
nimmt keine Argumente.
Wenn --if-branch
fehlschlägt, dann erstellt --else-branch
einfach einen neuen Zweig mit dem Namen, der --if-branch
gegeben wurde.
Zum Beispiel, wenn feature_branch
noch nicht existiert.
Dann würde --if-branch feature_branch --else-branch
, einen neuen Zweig namens feature_branch
erstellen,
und es hätte keine Anfangsdaten oder Schwellenwerte.
Dann würde bencher run
mit feature_branch
fortgesetzt.
Es ist auch möglich, alle drei Flags zusammen zu koppeln: --if-branch
, --else-if-branch
und --else-branch
.
Zum Beispiel, --if-branch feature_branch --else-if-branch main --else-branch
.
Wenn die --if-branch
-Abfrage erfolgreich ist, dann wird --else-branch
nie ausgeführt, und ebenso, wenn die --if-else-branch
-Abfrage erfolgreich ist, dann wird --else-branch
nie ausgeführt.
Und --else-branch
wird erwartet, immer erfolgreich zu sein und erfolgreich zu beenden.
--endif-branch
Das Flag --endif-branch
fungiert als optionaler noop-Flag, um das Ende der --if-branch
-Anweisung anzuzeigen.
Es ist möglich, alle vier Flags zusammen zu koppeln: --if-branch
, --else-if-branch
, --else-branch
und --endif-branch
.
Zum Beispiel, --if-branch feature_branch --else-if-branch "$MY_ENV_VAR" --else-branch --endif-branch
.
🐰 Herzlichen Glückwunsch! Sie haben alles über die Zweigauswahl gelernt! 🎉