Erfassen Sie Ihre Fortschritte
Trailhead-Startseite
Trailhead-Startseite

Erfahren Sie mehr über Heroku Flow und seine Bestandteile

Lernziele

Nachdem Sie diese Lektion abgeschlossen haben, sind Sie in der Lage, die folgenden Aufgaben auszuführen:

  • Beschreiben eines allgemeinen Continuous-Delivery-Workflows mit Heroku Flow
  • Benennen der Bestandteile von Heroku Flow und Beschreiben ihres Zwecks

Heroku Flow ist ein einfach zu nutzender, strukturierter Workflow für Continuous Delivery auf der Heroku-Plattform. Die Lösung vereint Heroku Pipelines, Review Apps, Release Phase, Heroku CI, GitHub und die Slack-Integration für einen einfachen visuellen Workflow von der Programmierung bis zur Produktion.

Ein üblicher Continuous-Delivery-Workflow von Heroku sieht etwa so aus:

  1. Ein Entwickler oder Teammitglied erstellt eine Heroku Pipeline und beginnt, Anwendungen hinzuzufügen.
  2. Ein Entwickler erstellt eine Pull Request, um eine Änderung an der Codebasis einer Anwendung vorzunehmen.
  3. Heroku erstellt automatisch eine Review App für die Pull Request, mit der Entwickler die Änderung testen können.
  4. Wenn die Änderung abgeschlossen ist, wird sie mit dem Master Branch des Codes zusammengeführt.
  5. Der Master Branch wird automatisch für weitere Tests in einer Staging App bereitgestellt.
  6. Wenn Heroku CI oder Release Phase konfiguriert ist, werden Tests und Aufgaben ausgeführt, um zu prüfen, ob es Probleme mit Änderungen am Code oder mit den Aufgaben gibt, die für Release Phase eingerichtet wurden (z. B. Datenbankmigration).
  7. Wenn alles fertig ist, wird die Staging App in die Produktionsumgebung überführt, in der die Änderung für Endbenutzer verfügbar ist.
  8. Wenn die Pipeline mit Slack integriert ist, wird beim Erstellen einer Pull Request eine Benachrichtigung an den Slack Room gesendet. Der Code wird wieder mit dem Master Branch zusammengeführt, wodurch das Team beim Status und den Ergebnissen von Continuous-Integration-Tests und Release-Phase-Aufgaben auf den neuesten Stand gebracht wird. Teammitglieder mit den entsprechenden Berechtigungen können im Slack Room auch Anwendungen in der Staging-Umgebung bereitstellen oder sie in die Produktionsumgebung überführen.

Hinweis: In diesem Modul wird nicht erklärt, wie Heroku ChatOps (die Slack-Integration) eingerichtet wird. Mehr dazu erfahren Sie in unserer Dokumentation.

Es ist an der Zeit, die Bestandteile von Heroku Flow kennenzulernen und den Zweck jedes einzelnen zu verstehen.

Heroku Pipelines

Eine Pipeline ist eine Gruppe von Heroku-Anwendungen, die dieselbe Codebasis verwenden. Jede Anwendung in einer Pipeline stellt einen dieser Schritte in einem Continuous-Delivery-Workflow dar: Überprüfung, Entwicklung, Staging und Produktion. Die Übersichtsseite "Pipelines" hilft Ihnen, den Fortschritt Ihrer Anwendungen sowie Meta-Informationen über den Status jeder Phase zu visualisieren. Beispielsweise können Sie sehen, ob Ihre Produktionsanwendung einen anderen Code ausführt als in der Staging-Phase.

GitHub-Integration

Durch Verbinden einer Heroku Pipeline mit einem GitHub-Repository ist es möglich, bei jedem GitHub-Push-Vorgang einen Branch manuell oder automatisch bereitzustellen. Bei jeder Bereitstellung können Sie auf dem Heroku Dashboard auf der Registerkarte "Activity" der Anwendung den Unterschied zwischen dem aktuellen Release und dem vorherigen Commit sehen, weshalb Sie nie raten müssen, welcher Code in der Anwendung enthalten ist. Wenn Sie Ihr GitHub-Repository so konfiguriert haben, dass es Heroku CI oder einen externen Continuous-Integration-Server (CI) verwendet, können Sie Heroku so konfigurieren, dass ein Branch automatisch bereitgestellt wird, nachdem CI für einen bestimmten Commit erfolgt ist.

Review Apps

Review Apps sind ein neuer Weg, Änderungen an Ihrer Codebasis vorzuschlagen, zu diskutieren und zu entscheiden, ob Änderungen mit Ihrer Codebasis zusammengeführt werden sollen. Für Heroku-Anwendungen, die mit GitHub verbunden sind, kann Heroku für jede geöffnete Pull Request (PR) manuell oder automatisch eine temporäre Testanwendung an einem eindeutigen URL anlegen. Die temporäre Anwendung wird bei jedem Commit automatisch aktualisiert. Anstatt also zu raten, was der Code macht, können Reviewer die Änderungen in einem Browser tatsächlich ausprobieren.

Release Phase

Mithilfe von Release Phase ist es möglich, Aufgaben auszuführen, bevor ein Release in die Produktion überführt wird, wodurch Wartungsfenster vermieden und Bereitstellungsrisiken verringert werden. Nutzen Sie Release Phase, um eine Datenbank zu migrieren, Datenobjekte in ein Content Delivery Network (CDN) hochzuladen, einen Cache zu ungültig zu machen oder eine andere Aufgabe auszuführen, die für die Produktionsreife Ihrer Anwendung erforderlich ist. Wenn eine Release Phase-Aufgabe fehlschlägt, wird das neue Release nicht bereitgestellt, sodass das aktuelle Produktionsrelease davon unberührt bleibt.

Heroku CI

Heroku CI ist eine Testausführungsumgebung mit schlanker Konfiguration, die in Heroku Pipelines integriert ist. Heroku CI führt Ihre Testskripts ohne Warteschlangenzeit aus, um schnellere Ergebnisse zu erzielen. Dabei werden Einweganwendungen verwendet, die mit Ihrer Staging- und Produktionsumgebung vergleichbar sind. Greifen Sie auf die Testergebnisse in Heroku oder auf GitHub zu, automatisieren Sie Bereitstellungen abhängig von CI-Ergebnissen und nutzen Sie eine vollständig visuelle Benutzeroberfläche, die die CI-Aufgabe bei der teambasierten Continuous Delivery unterstützt.

Heroku ChatOps

Heroku ChatOps nutzt die Möglichkeiten von Heroku Pipelines, um einen teamorientierten Bereitstellungs-Workflow zu Slack zu ermöglichen. Es ermöglicht Entwicklern das Bereitstellen in der Staging-Umgebung oder das Überführen der Anwendung aus Slack in die Produktion. Mithilfe von Heroku ChatOps können Teams alle Codeänderungen in ihrem Slack-Kanal verfolgen. Pull-Request-Benachrichtigungen, Merge-Vorgänge und CI-Build-Ergebnisse werden allesamt in Slack angezeigt, sodass kein Kontextwechsel erforderlich ist, um die Build-Ergebnisse zu sehen oder zu überprüfen, ob das Überführen in die Produktion erfolgreich war.