Roll-outs und Releases verwalten

Wenn Sie automatische Roll-outs aktiviert haben, wird bei jedem Push eines neuen Commits an 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 Console oder in der App Hosting GitHub-Prüfung einsehen.

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

Roll-outs ansehen

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

Rufen Sie Hosting & Serverless > App Hosting auf und wählen Sie dann Ansehen für das Backend aus, dessen Rollouts Sie sehen möchten. Auf dem Tab Roll-outs für das Backend wird eine Tabelle mit dem Verlauf aller Roll-outs für dieses Backend angezeigt.

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

  • 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, die den Roll-out ausgelöst hat.

Roll-out manuell auslösen

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

  • Erzwingen der Neuerstellung statischer Inhalte
  • Ein CI/CD-System kann Rollouts auslösen.
  • Die Einführung in der Produktion auf bestimmte Datumsangaben oder Uhrzeiten beschränken.

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

  1. Rufen Sie in der Firebase-Konsole Hosting & Serverless > App-Hosting auf.
  2. Klicken Sie für das Back-End, für das Sie einen Roll-out erstellen möchten, auf Anzeigen.
  3. Wählen Sie in der Zusammenfassung des Backend-Dashboards Roll-out erstellen aus.
  4. Wählen Sie den Zweig aus, der bereitgestellt werden soll.
  5. Wählen Sie den Commit aus, der bereitgestellt werden soll. Das kann der letzte Commit oder ein früherer Commit sein, 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 Einführungsprozess abgeschlossen ist, wird diese Einführung als aktuelle Einführung angezeigt.

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

firebase apphosting:rollouts:create BACKEND_ID

Alternativ können Sie einen Rollout für den letzten Commit für einen bestimmten Branch mit der Option --git-branch starten:

firebase apphosting:rollouts:create BACKEND_ID
--git_branch BRANCH_NAME

Mit der Option --git-commit können Sie auch einen Rollout mit einem bestimmten Commit erstellen:

firebase apphosting:rollouts:create BACKEND_ID
--git_commit COMMIT_ID

Vorherigen Roll-out wiederherstellen

App Hosting bietet zwei Optionen zum Wiederherstellen einer vorherigen Einführung:

  • Sofortiges Zurücksetzen ohne erneutes Erstellen
  • Neu erstellen und Rollback zu einer vorherigen Version durchführen

Sofort-Rollback erstellen

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

So erstellen Sie ein sofortiges Rollback:

  1. Rufen Sie in der Firebase-Konsole Hosting & Serverless > App-Hosting auf.
  2. Klicken Sie auf Anzeigen für das Back-End, für das Sie ein Rollback erstellen möchten.
  3. Wählen Sie den Tab Rollouts aus.
  4. Wählen Sie in der Tabelle Verlauf für das Backend das Dreipunkt-Menü für einen vorherigen Build aus.
  5. Wählen Sie Rollback zu diesem Build durchführen aus und bestätigen Sie den Vorgang.

Neu erstellen und Rollback ausführen

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 in der letzten Version beispielsweise ein API-Schlüsselwert in Secret Manager aktualisiert wurde, kann durch einen erneuten Build sichergestellt werden, dass der neue Schlüssel nach dem Rollback in Ihrer App verwendet wird.

So erstellen Sie die App neu und führen ein Rollback durch:

  1. Rufen Sie in der Firebase-Konsole Hosting & Serverless > App-Hosting auf.
  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 Rollouts aus.
  4. Wählen Sie Einführung erstellen aus.
  5. Wählen Sie im Dialogfeld Rollout erstellen die Option Früherer Commit aus und geben Sie dann die Commit-ID für die Version ein, die Sie neu erstellen und auf die Sie ein Rollback durchführen möchten. Die Commit-ID ist Teil der Änderungsdetails für jeden Roll-out,der im Label in Klammern angegeben ist.
  6. Wählen Sie Erstellen aus, um mit dem Rollback zu beginnen.

Einstellungen für den Roll-out ändern

Sie können den Live-Branch für Rollouts ändern und automatische Rollouts über die Steuerelemente im Dashboard für ein Backend unter Einstellungen > Bereitstellung deaktivieren oder aktivieren.

  1. Rufen Sie in der Firebase-Konsole Hosting & Serverless > App-Hosting auf.
  2. Klicken Sie für das Backend, in dem Sie die Einstellungen für die Einführung aktualisieren möchten, auf Anzeigen.
  3. Wählen Sie im Backend-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 Backend (siehe In mehreren Umgebungen bereitstellen).

Automatische Roll-outs verwalten

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

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

Verzeichnisse oder Dateien, die Sie Ignored Paths 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 App Hosting automatisch mit „*“ für die erforderlichen Pfade ausgefüllt.

Ein Screenshot der auf dieser Seite beschriebenen Benutzeroberfläche.

Wenn Sie einen Commit übertragen, bei dem keine der geänderten Dateien mit den erforderlichen Pfaden übereinstimmt (oder wenn alle Änderungen explizit durch die ignorierten Pfade ausgeschlossen werden), wird der Empfang des GitHub-Ereignisses von App Hosting bestätigt. Der Build- und Bereitstellungsstatus wird jedoch als SKIPPED gekennzeichnet und es wird keine automatische Bereitstellung ausgelöst.