Automatisierung der Webbereitstellung - GitHub-Aktionen, Azure Web Apps und Appsettings
In der heutigen schnelllebigen Welt der Softwareentwicklung ist die Automatisierung der Bereitstellung nicht nur eine Annehmlichkeit, sondern eine Notwendigkeit geworden. Der Druck nach schnelleren Release-Zyklen, weniger Fehlern und minimalen manuellen Eingriffen hat dazu geführt, dass Entwicklungs- und Betriebsteams automatisierte Bereitstellungsprozesse einführen, die sich gut in Versionskontrolle, kontinuierliche Bereitstellung und CI/CD-Pipelines integrieren lassen.
Um Entwicklern zu helfen, diese Automatisierung zu meistern, präsentiert Tim Corey in seinem Video mit dem Titel "Web Deployment Automation - GitHub Actions, Azure Web Apps, and Appsettings" eine praktische Anleitung In diesem Artikel wird sein Ansatz ausgepackt, indem er die wichtigsten Konzepte erläutert, um die Bedeutung eines zuverlässigen Bereitstellungsprozesses sowohl in Entwicklungs- als auch in Produktionsumgebungen hervorzuheben.
Warum die Bereitstellung automatisieren?
Tim beginnt damit, dass er den Bereitstellungsprozess als etwas darstellt, das immer automatisiert werden sollte. Er beschreibt dies nicht nur als eine moderne Best Practice, sondern auch als eine überraschend einfache und zugängliche Aufgabe dank moderner Automatisierungswerkzeuge für die Bereitstellung wie GitHub Actions und Azure Web Apps. Dadurch entfallen manuelle Bereitstellungen, langwierige Konfigurationen oder Konfigurationsfehler, die oft aus manueller Arbeit resultieren.
Er macht deutlich, dass die Automatisierung von Aufgaben wie der Softwarebereitstellung dafür sorgt, dass neuer Code jedes Mal, wenn Sie ihn veröffentlichen, automatisch erstellt, getestet und in einem vollständig automatisierten Workflow bereitgestellt wird.
Bau der Anwendung: Blazor Web App
In diesem Teil des Tutorials demonstriert Tim, wie man eine grundlegende Blazor-Anwendung mit Visual Studio erstellt. Er führt durch die Auswahl des Projekttyps, die Aktivierung von HTTPS, die Auswahl von .NET 8 und die Konfiguration von Rendering-Modi. Das Ziel ist es nicht, eine komplexe Anwendung zu erstellen, sondern ein einfaches Projekt, das jedes Mal mit demselben Bereitstellungsprozess bereitgestellt werden kann.
Diese ersten Schritte unterstreichen, wie wichtig es ist, bei der Entwicklung eine Bereitstellungspipeline im Blick zu haben. Indem sie mit einer sauberen und testbaren Anwendung beginnen, können Entwicklungsteams die spätere Bereitstellungszeit erheblich reduzieren.
Verwendung von Appsettings für lokale Konfigurationen
Tim zeigt dann, wie man die Datei appsettings.json mit simulierten Konfigurationswerten einrichtet. Dies ist für Konfigurationsmanagement-Tools unerlässlich und hilft Teams, die Trennung von Einstellungen für Test- und Produktionsumgebungen beizubehalten.
Er erklärt, dass durch die Einbindung von IConfiguration in eine Razor-Komponente Werte wie Verbindungsstrings und verschachtelte Einstellungen einfach angezeigt werden können - eine großartige Praxis in nativen Cloud-Anwendungen, bei denen automatisierte Prozesse von einer sauberen Trennung der Konfiguration abhängen.
Lokale Geheimnisse für Entwicklungssicherheit
Hier stellt Tim secrets.json vor, die Funktion von Visual Studio für die automatische Deployment-Sicherheit. Er erklärt, dass diese Geheimnisse die App-Einstellungen außer Kraft setzen, aber lokal auf dem Rechner des Entwicklers verbleiben, so dass die Vertraulichkeit gewahrt bleibt und die Gefahr eines Durchsickerns von Anmeldedaten in die Versionskontrolle minimiert wird.
In diesem Teil des Tutorials werden Devops-Praktiken hervorgehoben, die die Sicherheit und Konsistenz über verschiedene Umgebungen hinweg fördern und den Softwarebereitstellungszyklus verbessern, ohne sensible Informationen preiszugeben.
Versionskontrolle und GitHub-Integration
Eine solide Versionskontrolle ist eine der wichtigsten Grundlagen für jedes CI/CD-System. Tim verwendet die Git-Integration in Visual Studio, um ein Repository zu initialisieren und den Quellcode auf GitHub zu veröffentlichen. Dies schafft die Voraussetzungen für den Aufbau einer CI/CD-Pipeline, die Codeänderungen erkennen und automatisch einen Bereitstellungsprozess starten kann.
Er erwähnt, wie jeder Commit nachverfolgt wird, was den Betriebsteams bei der Behebung von Fehlern oder der Bereitstellung neuer Funktionen sehr hilft. Durch die Verwendung von GitHub Actions ist der automatische Bereitstellungsprozess sowohl nachvollziehbar als auch transparent.
Bereitstellung der Azure Web App
Tim wechselt zum Azure-Portal, um zu demonstrieren, wie man eine kostenlose Web-App-Ressource bereitstellt. Er erstellt eine Ressourcengruppe, weist ihr einen Namen zu und wählt Laufzeiteinstellungen wie .NET 8 und Linux aus - gängige Standardeinstellungen in vielen nativen Cloud-Anwendungen.
Er weist darauf hin, dass Azure die Build-Artefakte in Containern ausführt, die Komplexität abstrahiert und gleichzeitig die für die Bereitstellung erforderlichen Tools bereitstellt, auch wenn die Bereitstellung als "Code" erfolgt.
Einschränkungen der kostenlosen Version verstehen
Für kleine Implementierungsprojekte ist der kostenlose Plan von Azure ein guter Ausgangspunkt. Tim erklärt, dass es zwar die CPU-Nutzung einschränkt und bestimmte Funktionen wie Deployment-Slots deaktiviert, aber perfekt für die Entwicklung, Demos oder Staging funktioniert.
Diese Erklärung unterstreicht den Wert von Staging-Umgebungen in der Softwareentwicklung, die es Teams ermöglichen, unter produktionsnahen Bedingungen zu testen, ohne dass dabei Kosten entstehen.
Einrichten von CI/CD über das Deployment Center
Anschließend führt Tim durch das Deployment Center von Azure und wählt GitHub als Integrationsquelle. Dies veranschaulicht das Herzstück des CI/CD-Modells - die Verknüpfung von Quellcodekontrolle und Softwarebereitstellung durch kontinuierliche Integration.
Er wählt sein GitHub-Repository aus, legt eine grundlegende Authentifizierung fest und generiert eine YAML-Datei, die die Automatisierungspipeline beschreibt. Er weist auf die Bedeutung der Einrückung in YAML hin und erinnert daran, dass auch bei automatisierten Deployment-Setups auf Details geachtet werden muss, um Fehler zu vermeiden.
Authentifizierungseinstellungen auflösen
Ein Versuch der Bereitstellung zeigt, dass die grundlegende Authentifizierung standardmäßig deaktiviert ist. Tim navigiert zu den Azure-Einstellungen, um sie zu aktivieren, und zeigt, wie reale Bereitstellungsautomatisierungsprozesse oft den Umgang mit anderen Diensten und Konfigurationen beinhalten.
Sobald die Aufgabe gelöst ist, kehrt er zum Deployment Center zurück und initiiert erfolgreich den automatisierten Arbeitsablauf, was beweist, dass dieser Ansatz nur sehr wenige manuelle Eingriffe erfordert, sobald er korrekt eingerichtet ist.
CI/CD Workflow-Ausführung
Tim wechselt zu GitHub und beobachtet, wie der Workflow automatisch ausgelöst wird. GitHub Actions erstellt die App, veröffentlicht sie und stellt sie auf Azure bereit - alles auf der Grundlage eines einfachen Pushs an das Repo. Dieser Ansatz der kontinuierlichen Bereitstellung hilft bei der automatischen Fehlerprüfung des Codes und reduziert die manuelle Bereitstellung vollständig.
Das Ergebnis? Ein schnellerer Release-Zyklus mit weniger Ausfallzeiten und minimaler Beteiligung der Betriebsteams nach der Erstkonfiguration.
Verwendung von Azure zur Verwaltung von Geheimnissen
In einer Produktionsumgebung zeigt Tim, wie man in Azure Umgebungsvariablen setzt, um appsettings.json zu überschreiben, ohne den Quellcode zu berühren.
Er erklärt, wie man Verbindungszeichenfolgen und verschachtelte Werte hinzufügt und dabei doppelte Unterstriche (__) für verschachtelte Schlüssel verwendet. Dadurch wird sichergestellt, dass Entwickler ihren Code pflegen können, ohne auf sensible Daten zuzugreifen - ein ideales DevOps-Szenario.
Diese Trennung von Belangen ist einer der größten Vorteile der Deployment-Automatisierung: Entwickler bringen sauberen Code ein, während Administratoren die Konfigurationen sicher verwalten.
Dynamische Konfiguration ohne Code-Änderungen
Tim hebt hervor, dass in Azure vorgenommene Änderungen nach einem Neustart wirksam werden können, ohne dass eine Neukompilierung oder manuelle Neuverteilung erforderlich ist. Dies ist besonders nützlich, wenn in Test- und Produktionsumgebungen unterschiedliche Variablen verwendet werden müssen, um die Wahrscheinlichkeit von Konfigurationsfehlern zu verringern.
Auf diese Weise können Devops-Teams die Automatisierung auch dann beibehalten, wenn sich die App-Einstellungen ändern, und mehrere Bereitstellungsumgebungen unterstützen, ohne dass der Code neu geschrieben werden muss.
Zusammenfassung: Vorteile der Bereitstellungsautomatisierung
Am Ende des Videos hebt Tim hervor, dass der gesamte Prozess der Bereitstellungsautomatisierung - vom Schreiben des Codes bis zu seiner automatischen Bereitstellung - etwa 30 Minuten gedauert hat. Wenn Sie einmal den Dreh raus haben, ist das in weniger als fünf Minuten erledigt.
Er ermutigt Entwickler, diese automatisierten Bereitstellungstechniken auch für kleine Projekte zu übernehmen, da sie die Softwarebereitstellung vereinfachen, Fehler reduzieren und eine schnellere Reaktion auf neue Funktionen oder Probleme ermöglichen.
Ganz gleich, ob Sie mit Azure, AWS oder Google Cloud arbeiten, das Verständnis und die Übernahme der Bereitstellungsautomatisierung bilden die Grundlage für skalierbarere und sicherere Softwareprojekte.
Abschluss
Das Video von Tim Corey bietet einen klaren und effektiven Fahrplan für die Einrichtung eines vollständig automatisierten Bereitstellungsprozesses. Mit Hilfe von Tools wie GitHub Actions und Azure Web Apps machen es moderne Devops-Praktiken einfacher denn je, die Bereitstellung Ihrer Anwendungen zu automatisieren, manuelle Arbeit zu reduzieren und die Zuverlässigkeit in Entwicklungs-, Test- und Produktionsumgebungen zu erhöhen.
