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
Was ist Heroku Flow?
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 sowie GitHub- und Slack-Integrationen für einen einfachen visuellen Workflow von der Programmierung bis zur Produktion.
Ein üblicher Continuous-Delivery-Workflow von Heroku sieht etwa so aus:
- Ein Entwickler oder Teammitglied erstellt eine Heroku Pipeline und beginnt, Anwendungen hinzuzufügen.
- Ein Entwickler erstellt eine Pull Request, um eine Änderung an der Codebasis einer Anwendung vorzunehmen.
- Heroku erstellt automatisch eine Review App für die Pull Request, mit der Entwickler die Änderung testen können.
- Wenn die Änderung abgeschlossen ist, wird sie mit dem
main
-Branch des Codes zusammengeführt. - Der
main
-Branch wird automatisch für weitere Tests in einer Staging-Anwendung bereitgestellt. - Wenn Heroku CI konfiguriert ist, werden Tests ausgeführt, um zu prüfen, ob es Probleme mit Änderungen am Code gibt. Ist Release Phase konfiguriert, werden vor der Bereitstellung des Codes Release Phase-Aufgaben ausgeführt. Ein Beispiel für eine Release Phase-Aufgabe ist die Durchführung einer Datenbankmigration.
- Wenn alles fertig ist, wird die Staging-Anwendung von einem Entwickler in die Produktionsumgebung hochgestuft, in der die Änderung für Endbenutzer verfügbar ist.
- Wenn die Pipeline mit Slack integriert ist, wird eine Benachrichtigung an einen spezifischen Channel gesendet, wenn eine Pull Request geöffnet und der Code mit dem
main
-Branch zusammengeführt wird. Diese Posts bringen das Team in puncto Status und Ergebnisse von CI-Tests und Release Phase-Aufgaben auf den neuesten Stand. Teammitglieder mit den nötigen Berechtigungen können im Slack-Channel auch Anwendungen in der Staging-Umgebung bereitstellen oder sie in die Produktionsumgebung hochstufen.
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.
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 im Heroku Dashboard auf der Registerkarte "Aktivität" der Anwendung den Unterschied zwischen dem aktuellen Release und dem vorherigen Commit sehen. 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 ermöglichen Ihnen, Ä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 offene 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 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 Hochstufen der Anwendung aus Slack in die Produktion. Mithilfe von Heroku ChatOps können Teams alle Codeänderungen in ihrem Slack-Channel verfolgen. Pull Request-Benachrichtigungen, Merge-Vorgänge und CI-Build-Ergebnisse werden allesamt in Slack angezeigt. Es ist kein Kontextwechsel erforderlich, um die Build-Ergebnisse zu sehen oder zu überprüfen, ob das Hochstufen in die Produktion erfolgreich war.
Nach diesem Überblick über die Bestandteile von Heroku Flow erfahren Sie in der nächsten Lektion Näheres über einige dieser Bestandteile.