Übersicht
Standardmäßig ist jeder Snapshot-Build ein vollständiger Build — er startet mit einem sauberen Basis-Image, klont alle Repositorys und führt jedes Blueprint von Grund auf neu aus. Das gewährleistet eine vollständig reproduzierbare Umgebung, kann aber langsam sein, wenn Sie nur eines von vielen Blueprints geändert haben. Differenzielle Builds optimieren diesen Prozess, indem sie den Snapshot des vorherigen erfolgreichen Builds als Ausgangspunkt wiederverwenden. Nur Workspaces, deren Blueprints tatsächlich geändert wurden, werden neu gebaut; unveränderte Workspaces werden unverändert aus dem übergeordneten Build übernommen. Dadurch lassen sich die Build-Zeiten deutlich verkürzen, insbesondere für Organisationen mit vielen Repositorys.Aktivieren von differenziellen Builds
1
Zu den Umgebungseinstellungen gehen
Gehen Sie zu Settings > Environment > Erweitert.
2
Den Schalter aktivieren
Aktivieren Sie den Schalter differenzielle Builds. Die Beschreibung lautet: „Schnellere Builds durch Wiederverwendung unveränderter Workspaces.“
3
Einen Build auslösen
Speichern Sie eine Blueprint-Änderung oder klicken Sie auf Build snapshot. Beim nächsten Build wird ein differenzieller Build verwendet, sofern ein gültiger übergeordneter Build vorhanden ist.
So funktioniert es
Wenn bei aktivierten differenziellen Builds ein Build ausgelöst wird, folgt das System diesem Ablauf:
- Einen übergeordneten Build finden
Das System sucht nach dem zuletzt erfolgreichen Build (Status success oder partial) mit einem Snapshot-Image für dieselbe Plattform und Maschinenkonfiguration, um ihn als übergeordneten Build zu verwenden. Wenn kein geeigneter übergeordneter Build vorhanden ist, fällt der Build automatisch auf einen vollständigen Build zurück.
- Blueprints vergleichen
Die Konfiguration jedes Workspaces wird mit dem übergeordneten Build verglichen. Das System berechnet für jeden Workspace einen Hashwert seiner Eingaben — einschließlich der Blueprint-Inhalte, angehängten Dateien und Secrets — und prüft, was sich geändert hat.
- Workspace-Aktionen zuweisen
Auf Grundlage des Vergleichs erhält jeder Workspace eine von drei Aktionen:
Bei vererbten Workspaces wird
initialize nicht erneut ausgeführt. Schreiben Sie maintenance
so, dass es in sich geschlossen ist und nach dem Abrufen des neuesten Codes
eigenständig ausgeführt werden kann. Es kann Tools und Runtimes verwenden, die bereits im übergeordneten Snapshot installiert sind,
darf aber nicht voraussetzen, dass initialize unmittelbar davor ausgeführt wurde, oder sich auf
Umgebungsvariablen verlassen, die initialize zuvor in $ENVRC geschrieben hat.
- Build ausführen
Der Build startet vom Snapshot-Image des übergeordneten Builds statt von einer sauberen Basis. Das bedeutet:
- Vererbte Workspaces haben ihre Tools, Runtimes und Abhängigkeiten bereits installiert. Das System holt den neuesten Code (
git pull) und führtmaintenanceaus, um Abhängigkeiten zu aktualisieren. - Neu erstellte Workspaces werden von Grund auf eingerichtet — frisch geklont und mit der vollständigen Sequenz aus
initialize+maintenance. - Entfernte Workspaces werden aus ihren Verzeichnissen bereinigt.
initialize bei differenziellen Builds (da die Tools bereits im übergeordneten Image vorhanden sind) und führen nur maintenance aus.
$ENVRC wird zu Beginn jedes Builds zurückgesetzt, einschließlich differenzieller Builds.
Umgebungsvariablen und PATH-Einträge, die von einem vorherigen
Build in $ENVRC geschrieben wurden, werden nicht übernommen. Wenn maintenance sie benötigt, muss es sie
selbst konfigurieren.Wann stattdessen ein vollständiger Build ausgeführt wird
Auch bei aktivierten differenziellen Builds wird ein Build in diesen Situationen als vollständiger Build ausgeführt:- Sie fordern einen vollständigen Build an — Sie wählen im Dropdown Build snapshot die Option Vollständiger Build aus
- Der neueste vollständige Build ist zu alt — ein automatischer Build, etwa ausgelöst durch das Speichern eines Blueprints, läuft als vollständiger Build, wenn für seine Plattform kein vollständiger Build vorhanden ist oder der neueste älter ist als das Intervall Aktualisierung vollständiger Builds unter Settings > Environment > Advanced (standardmäßig alle 7 Tage)
- Es ist kein wiederverwendbarer übergeordneter Build vorhanden — es gibt keinen Build mit dem Status
successoderpartialmit einem Snapshot-Image für dieselbe Plattform und Maschinenkonfiguration - Der übergeordnete Build ist inkompatibel — Plattform, Maschinenkonfiguration, Basis-Image oder die Einstellung Clone repositories on all platforms haben sich seit dem übergeordneten Build geändert, oder der übergeordnete Build hat keine Secret-Ausgangsbasis für den Vergleich
- Die Organisations- oder Enterprise-Konfiguration hat sich geändert — ein Organisations- oder Enterprise-Blueprint, eine Blueprint-Datei oder ein Secret hat sich seit dem übergeordneten Build geändert
Build-Typ anzeigen
Nachdem ein Build abgeschlossen ist, können Sie sehen, ob es sich um einen Differential- oder vollständiger Build-Build handelt:- Gehen Sie zu Settings > Environment > Snapshots
- Klicken Sie im Verlauf auf einen Build
- Das Badge Build kind zeigt entweder Differential (blau) oder vollständiger Build (Standard) an
- Differential: “Nur geänderte Workspaces werden neu gebaut; unveränderte werden vom letzten erfolgreichen Build mit derselben Konfiguration übernommen”
- vollständiger Build: “Alle Workspaces werden von Grund auf neu gebaut”
Vorteile
Vollständigen Build manuell auslösen
Auch wenn differenzielle Builds aktiviert sind, können Sie über die Schaltfläche Build snapshot einen vollständigen Build erzwingen. Verwenden Sie das Dropdown-Menü, um vollständiger Build statt der standardmäßigen differenziellen Option auszuwählen. Wir empfehlen, regelmäßig einen vollständigen Build auszuführen, um übernommenen Zustand zu verwerfen und zu überprüfen, ob Ihre Blueprints die Umgebung weiterhin von Grund auf erstellen können. Führen Sie außerdem einen solchen Build aus, nachdem Sie Setup entfernt oder ersetzt haben, das möglicherweise veraltete Dateien, Tools oder Abhängigkeiten im Snapshot hinterlassen hat. Ein vollständiger Build führt alleinitialize- und maintenance-Schritte erneut aus.
FAQ
Beeinflusst das Aktivieren differenzieller Builds meine Sitzungen?
Beeinflusst das Aktivieren differenzieller Builds meine Sitzungen?
Nein. Sitzungen starten immer vom finalen Snapshot, unabhängig davon, wie er erstellt wurde. Der einzige Unterschied ist die Build-Geschwindigkeit.
Was ist, wenn ein differenzieller Build einen fehlerhaften Snapshot erzeugt?
Was ist, wenn ein differenzieller Build einen fehlerhaften Snapshot erzeugt?
Pinnen Sie unter Settings > Environment > Snapshots einen zuvor als funktionierend bekannten Build an und starten Sie dann einen vollständigen Build, um einen sauberen Snapshot zu erhalten. Sie können differenzielle Builds auch komplett deaktivieren, um wieder zu vollständigen Builds zurückzukehren.
Können partielle Builds als übergeordnete Builds dienen?
Können partielle Builds als übergeordnete Builds dienen?
Ja. Ein Build mit dem Status
partial (einige Workspaces waren erfolgreich, andere sind fehlgeschlagen) kann als übergeordneter Build dienen. Das System übernimmt nur von Workspaces, die im übergeordneten Build erfolgreich waren.
