Roll-outs und Releases verwalten

Wenn Sie automatische Roll-outs aktiviert haben, wird bei jedem Push eines neuen Commits in den Live-Branch in Ihrem GitHub-Repository App Hosting automatisch eine neue Version Ihrer App bereitgestellt. Sie können den Roll-out-Status in der Firebase Konsole oder in der App Hosting GitHub-Prüfung prüfen.

Außerdem unterstützt App Hosting manuell ausgelöste Roll-outs für die CI/CD-Integration oder in allen anderen Fällen, in denen Sie ein Roll-out erzwingen möchten.

Roll-outs ansehen

In der Firebase Konsole haben Sie Zugriff auf detaillierte Informationen zu allen Roll-outs Ihrer App.

Gehen Sie zu Hosting & Serverless > App Hosting, und wählen Sie dann für das Back-End, dessen Roll-outs Sie sehen möchten, die Option Ansehen aus. Auf dem Tab Roll-outs für das Back-End wird eine Tabelle mit dem Verlauf aller Roll-outs für dieses Back-End angezeigt.

Jeder Roll-out-Eintrag enthält Links zum Cloud Build Job und zur Änderung oder zum Commit, durch die bzw. den der Roll-out ausgelöst wurde, sowie grundlegende Informationen zum Autor, zum Erstellungsdatum und zum Status des Roll-outs.

  • Der Cloud Build Job ist die Build-Umgebung, in der App Hosting den Build-Befehl Ihrer App ausführt. Sie können auf Cloud Build Logs zugreifen, indem Sie auf die Build-ID klicken.
  • Die Änderung ist der GitHub-Commit oder eine andere Aktion, durch die bzw. den der Roll-out ausgelöst wurde.

Roll-out manuell auslösen

Wenn Sie ein Roll-out manuell aus Ihrer GitHub-Quelle auslösen möchten, ohne einen neuen Commit zu pushen, können Sie ein Roll-out über die Firebase Konsole oder die Firebase CLI erstellen. Das ist in folgenden Fällen nützlich:

  • Erzwingen der Neugenerierung statischer Inhalte
  • Ermöglichen, dass ein CI/CD-System Roll-outs auslöst
  • Beschränken von Produktions-Roll-outs auf bestimmte Daten oder Uhrzeiten

So lösen Sie ein Roll-out in der Firebase Konsole aus:

  1. Gehen Sie in der Firebase Konsole zu Hosting & Serverless > App Hosting.
  2. Klicken Sie für das Back-End, für das Sie ein Roll-out erstellen möchten, auf Ansehen.
  3. Wählen Sie in der Zusammenfassung des Back-End-Dashboards die Option Roll-out erstellen aus.
  4. Wählen Sie den Branch aus, der bereitgestellt werden soll.
  5. Wählen Sie den Commit aus, der bereitgestellt werden soll, entweder den neuesten Commit oder einen früheren Commit, der durch seine Commit-ID angegeben wird.
  6. Wählen Sie Erstellen aus. In der Tabelle mit dem Roll-out-Verlauf werden der Status und eine Build-Nummer für den Roll-out angezeigt. Wenn der Roll-out-Prozess abgeschlossen ist, wird dieser Roll-out als aktueller Roll-out angezeigt.

Führen Sie den folgenden Befehl aus, um ein Roll-out in der Firebase CLI auszulösen, und wählen Sie bei Aufforderung den Branch für das Roll-out aus:

firebase apphosting:rollouts:create BACKEND_ID

Alternativ können Sie mit der Option --git-branch ein Roll-out für den neuesten Commit eines bestimmten Branchs starten:

firebase apphosting:rollouts:create BACKEND_ID
--git_branch BRANCH_NAME

Sie können auch ein Roll-out mit einem bestimmten Commit erstellen. Verwenden Sie dazu die Option --git-commit:

firebase apphosting:rollouts:create BACKEND_ID
--git_commit COMMIT_ID

Vorherigen Roll-out wiederherstellen

App Hosting bietet zwei Möglichkeiten, einen vorherigen Roll-out wiederherzustellen:

  • Sofortiges Rollback durchführen ohne Neuerstellung
  • Neuerstellung und Rollback zu einer vorherigen Version

Sofortiges Rollback erstellen

Manchmal müssen Sie schnell zu einer älteren Version Ihrer App zurückkehren, z. B. wenn Sie einen schwerwiegenden Fehler in einem neu bereitgestellten Roll-out entdeckt haben oder wenn ein instabiler Build neue Roll-outs verhindert. In solchen Fällen können Sie ein vorhandenes Container-Image Ihrer Wahl aus einem vorherigen Roll-out wiederherstellen. Dieses Image wird nicht neu erstellt, sondern verwendet die Code- und Umgebungskonfiguration von der ersten Erstellung.

So erstellen Sie ein sofortiges Rollback:

  1. Gehen Sie in der Firebase Konsole zu Hosting & Serverless > App Hosting.
  2. Klicken Sie für das Back-End, für das Sie ein Rollback erstellen möchten, auf Ansehen.
  3. Wählen Sie den Tab Roll-outs aus.
  4. Wählen Sie in der Tabelle Verlauf für das Back-End das Dreipunkt-Menü für einen vorherigen Build aus.
  5. Wählen Sie Rollback zu diesem Build aus und bestätigen Sie die Auswahl.

Neuerstellung und Rollback

Wenn Sie zu einer älteren Version Ihrer App zurückkehren, aber die aktuelle Konfiguration beibehalten möchten, können Sie die App im Rahmen des Rollback-Prozesses neu erstellen. Wenn beispielsweise in der neuesten Version ein API-Schlüsselwert in Secret Manageraktualisiert wurde, kann durch die Neuerstellung sichergestellt werden, dass der neue Schlüssel nach dem Rollback in Ihrer App verwendet wird.

So führen Sie eine Neuerstellung und ein Rollback durch:

  1. Gehen Sie in der Firebase Konsole zu Hosting & Serverless > App Hosting.
  2. Klicken Sie für das Back-End, für das Sie ein Rollback erstellen möchten, auf Dashboard ansehen.
  3. Wählen Sie den Tab Roll-outs aus.
  4. Wählen Sie Roll-out erstellen aus.
  5. Wählen Sie im Dialogfeld Roll-out erstellen die Option Vorheriger Commit aus und geben Sie dann die Commit-ID für die Version ein, zu der Sie ein Rollback durchführen möchten. Die Commit-ID ist Teil der „Änderungsdetails“ für jeden Roll-out in Ihrem Roll-out-Verlauf und in Klammern im Label enthalten.
  6. Wählen Sie Erstellen aus, um das Rollback zu starten.

Roll-out-Einstellungen ändern

Sie können den Live-Branch für Roll-outs ändern und automatische Roll-outs deaktivieren oder aktivieren. Verwenden Sie dazu die Steuerelemente in der Ansicht Einstellungen > Bereitstellung im Dashboard für ein Back-End.

  1. Gehen Sie in der Firebase Konsole zu Hosting & Serverless > App Hosting.
  2. Klicken Sie für das Back-End, für das Sie die Roll-out-Einstellungen aktualisieren möchten, auf Ansehen.
  3. Wählen Sie im Back-End-Dashboard Einstellungen aus. In der Standardansicht werden Informationen zu Domains und benutzerdefinierten Domains angezeigt.
  4. Wählen Sie die Ansicht Bereitstellung aus. In dieser Ansicht können Sie den Live-Branch für Roll-outs ändern und automatische Roll-outs deaktivieren oder aktivieren. Außerdem gibt es Optionen zum Festlegen des App-Stammverzeichnisses und der Umgebung für das Back-End (siehe In mehreren Umgebungen bereitstellen).

Automatische Roll-outs verwalten

Standardmäßig geht App Hosting von einer Liste aller erforderlichen Dateien aus. Das bedeutet, dass jeder neue Commit in Ihrem Repository einen neuen Build und ein neues Roll-out auslöst. Um Zeit zu sparen und unnötige Bereitstellungen zu vermeiden, können Sie App Hosting jedoch so konfigurieren, dass Builds basierend auf den in einem Commit geänderten Dateipfaden übersprungen werden.

Sie können dies unter Einstellungen > Roll-outs > Roll-out-Trigger konfigurieren. Hier können Sie das Feld Erforderliche Pfade leer lassen, wenn jeder neue Commit in Ihrem Repository einen neuen Build und ein neues Roll-out auslösen soll. Alternativ können Sie genau angeben, welche Verzeichnisse oder Dateien immer ein Roll-out auslösen sollen. Wenn Sie Verzeichnisse angeben, müssen Sie alle Pfade hinzufügen, bei denen Änderungen ein Roll-out auslösen sollen.

Verzeichnisse oder Dateien, die Sie unter Ignorierte Pfade hinzufügen, lösen nie ein automatisches Roll-out aus. Wenn ein Unterverzeichnis sowohl in der Liste der erforderlichen als auch in der Liste der ignorierten Pfade enthalten ist, wird kein automatisches Roll-out ausgelöst. Wenn Sie nur die Liste der ignorierten Pfade ausfüllen, wird in App Hosting automatisch "*" für die erforderlichen Pfade eingefügt.

Ein Screenshot der auf dieser Seite beschriebenen Benutzeroberfläche.

Wenn Sie einen Commit pushen, bei dem keine der geänderten Dateien mit Ihren erforderlichen Pfaden übereinstimmt oder alle Änderungen explizit durch Ihre ignorierten Pfade ausgeschlossen werden, App Hosting bestätigt trotzdem den Empfang des GitHub-Ereignisses. Die Build- und Roll-out-Status werden jedoch als SKIPPED markiert und es wird kein automatisches Roll-out ausgelöst.