Übung: Bereitstellen einer Spring Boot-Beispielanwendung
In dieser Übung verwenden Sie einen automatisierten Workflow zum Erstellen und Bereitstellen Ihrer Spring Boot-Beispielanwendung.
Einrichten einer GitHub-Aktion zum Bereitstellen der Beispielanwendung
Nachdem Sie die Azure-Ressourcen bereitgestellt haben, können Sie nun Ihre Spring Boot-Beispielanwendung bereitstellen.
Um Ihren Maven-GitHub-Workflow zu erstellen, verwenden Sie das Tool des CI/CD-Assistenten (Continuous Integration und Continuous Delivery), das im Bereitstellungscenter im Azure App Service-Portal verfügbar ist.
Das Azure App Service-Bereitstellungscenter generiert automatisch eine GitHub Actions-Workflowdatei, die auf Ihrem Anwendungsstapel basiert. Das Bereitstellungscenter committet die Datei dann an Ihr GitHub-Repository im richtigen Verzeichnis. Außerdem verknüpft das Bereitstellungscenter Ihre GitHub-Aktion mit einem Azure App Service-Veröffentlichungsprofil.
Navigieren Sie im Azure-Portal zu Ihrer Azure App Service-Web-App.
Erweitern Sie Bereitstellung im linken Bereich, und wählen Sie Bereitstellungscenter aus.
Wählen Sie in der Dropdownliste Quelle unter Continuous Deployment (CI/CD) die Option GitHub aus.
Wählen Sie GitHub Actions aus. (Dies sollte die Standardeinstellung sein, aber wenn nicht, wählen Sie Anbieter ändern aus, um die Anbieteroptionen zu laden.)
Führen Sie unter Einstellungen in den Dropdownlisten die folgenden Schritte aus:
a. Wählen Sie Ihr GitHub-Repository aus.
b. Wählen Sie als Branch main aus.
c. Wählen Sie als Anwendungsstapel JAVA 8 aus.Überprüfen Sie Ihre Auswahl auf der letzten Seite, und zeigen Sie die Workflowdatei, die an das Repository committet, in der Vorschau an.
Wählen Sie Speichern aus, um die Workflowdatei an das Repository zu committen, und beginnen Sie sofort mit dem Erstellen und Bereitstellen Ihrer App.
Hinweis
Sie können den GitHub Actions-Workflow auch in Ihrem Repository auslösen, indem Sie die Registerkarte Aktionen auswählen, den Build-and-Deploy-Workflow und dann Aufträge erneut ausführen auswählen.
Bestätigen des GitHub Actions-Builds
Wählen Sie in Ihrem GitHub-Repository die Registerkarte Aktionen aus, und wählen Sie dann auf der linken Seite unter Alle Workflows die Option „JAR-App erstellen und in Azure-Web-App bereitstellen“ aus.
Wählen Sie als Nächstes in der Tabelle auf der rechten Seite unter Workflowausführung die Workflowausführung Konfiguration des App Service-Bereitstellungsworkflows hinzufügen oder aktualisieren aus.
Warten Sie, bis die Workflowausführung fertig gestellt ist, und kopieren Sie dann unter dem Auftrag deploy (bereitstellen) in der Workflowausführung die URL aus dem Auftrag deploy, der die Azure webapp-URL anzeigt.
Öffnen Sie schließlich die URL in einem Browser, und überprüfen Sie, ob Ihre Java-Anwendung bereitgestellt wurde, mit Ihrer MySQL-Datenbank verbunden ist und Daten zurückgibt.
Nächste Schritte
Glückwunsch! Sie verfügen nun über zwei GitHub Actions-Workflows: eine Bereitstellungsaktion und eine Build-and-Deploy-Aktion.
Jedes Mal, wenn Sie einen git push
-Befehl zum Committen Ihres Codes eingeben, wird die Build-and-Deploy-Aktion ausgelöst, und Ihre Anwendung wird bereitgestellt.
Wichtig
Durch die erneute Ausführung der GitHub-Bereitstellungsaktion werden Ihre Ressourcen nicht neu erstellt, wenn sie bereits vorhanden sind. Sie müssen Ihre Ressourcengruppe oder Ressourcen manuell löschen und die GitHub-Aktion dann wieder ausführen.
Ihre Anwendung wird ersetzt, wenn Sie die GitHub-Aktion „Build-and-Deploy“ ein weiteres Mal ausführen.
Wenn Sie Ihre App Service-Instanz neu erstellen, müssen Sie auch auf das neue Veröffentlichungsprofil wechseln. Sie brauchen nur die folgende Zeile zu ändern:
publish-profile: ${{ secrets.AzureAppService_PublishProfile_c1ee8d191003493b9c9e13a9b78ad2c3 }}
Einrichten einer Azure-Pipeline zum Bereitstellen der Beispielanwendung
Wie zuvor müssen Sie eine Azure-Pipeline erstellen, um Ihre Anwendung zu erstellen und bereitzustellen.
Wechseln Sie in Azure DevOps zu Ihrem Projekt, wählen Sie „Pipelines“ aus und wählen Sie „Neue Pipeline“ (obere rechte Ecke).
Sie sehen nun vier Registerkarten zum Einrichten der Pipeline:
- Wählen Sie auf der Registerkarte Verbinden die Option GitHub (YAML-Datei) aus.
- Wählen Sie auf der Registerkarte Auswählen das GitHub-Repository aus, das Ihre Vorlage enthält.
- Wählen Sie auf der Registerkarte Konfigurieren die Option aus, um eine Vorhandene Azure Pipelines YAML-Datei zu verwenden.
- Wählen Sie dieses Mal den Pfad „/azuredevops/build_deploy.yml“
- Wählen Sie Weiter aus, um die Registerkarte *Überprüfung anzuzeigen, und überprüfen Sie Ihre Pipeline, bevor Sie sie ausführen
Sehen Sie sich auf dem Bildschirm YAML-Pipeline überprüfen die YAML-Datei an, die zum Erstellen der Pipeline verwendet wird:
name: Build and Deploy
trigger:
- main
stages:
# Build your Spring Boot App using Maven
- stage: Build
displayName: Build stage
jobs:
- job: MavenPackageAndPublishArtifacts
displayName: Maven Package and Publish Artifacts
pool:
vmImage: 'ubuntu-latest'
steps:
- task: Maven@3
displayName: 'Maven Package'
inputs:
mavenPomFile: 'pom.xml'
- task: CopyFiles@2
displayName: 'Copy Files to artifact staging directory'
inputs:
SourceFolder: '$(System.DefaultWorkingDirectory)'
Contents: '**/target/*.?(war|jar)'
TargetFolder: $(Build.ArtifactStagingDirectory)
- upload: $(Build.ArtifactStagingDirectory)
artifact: drop
# Deploy to Azure using the AzureWebApp task using your Service Connection
- stage: Deploy
displayName: Deploy stage
dependsOn: Build
condition: succeeded()
jobs:
- deployment: DeployLinuxWebApp
displayName: Deploy Linux Web App
environment: 'production'
pool:
vmImage: 'ubuntu-latest'
strategy:
runOnce:
deploy:
steps:
- task: AzureWebApp@1
displayName: 'Azure Web App Deploy'
inputs:
azureSubscription: $(serviceConnection)
appType: webAppLinux
appName: '$(webAppName)'
package: '$(Pipeline.Workspace)/drop/**/target/*.?(war|jar)'
Sehen wir uns einige der Felder an, die in der „Build“-Konfiguration verwendet werden:
- azureSubscription: Ihr Azure-Abonnement
- appType: Ihr Web-App-Typ
- appName: der Name Ihrer vorhandenen App Service-Instanz
- package: der Dateipfad zum Paket oder einem Ordner mit Ihrem App Service-Inhalt
Build-Variablen hinzufügen
Wie bei der Bereitstellungspipeline müssen Sie vor dem Speichern und Ausführen der Build- und Bereitstellungspipeline die Variablen Ihrer Pipeline hinzufügen:
- Wählen Sie oben rechts Variablen aus.
- Fügen Sie eine Variable mit dem Namen serviceConnection mit dem Wert als Namen Ihrer Dienstverbindung hinzu.
- Wählen Sie in der unteren rechten Ecke OK aus, um die Variable zu speichern.
- Fügen Sie eine zweite Variable mit dem Namen webAppName mit dem Namen Ihrer App Service-Instanz hinzu (die gleiche Variable, die in Ihrer Terraform-Variable „application_name“ definiert ist).
- Wählen Sie OK aus, um die Variable zu speichern.
- Klicken Sie auf Speichern in der unteren rechten Ecke, um die beiden Variablen zu speichern.
Beobachten der Ausführung der Pipeline
- Auswählen von &&, um die Pipeline zu speichern und auszuführen
- Verfolgen Sie den Buildprozess wie bei der Bereitstellungspipeline durch die einzelnen Phasen und Schritte.
- Vergewissern Sie sich, dass Ihre Java-Anwendung bereitgestellt wurde, mit Ihrer MySQL-Datenbank verbunden ist und Daten zurückgibt.
Nächste Schritte
Glückwunsch! Sie verfügen jetzt über zwei Azure-Pipeline-Workflows: eine Bereitstellungspipeline und eine Build-and-Deploy-Pipeline.
Jedes Mal, wenn Sie einen git push
-Befehl zum Committen Ihres Codes an die main-Branch eingeben, wird die Build-and-Deploy-Pipeline ausgelöst und Ihre Anwendung wird bereitgestellt.
Wichtig
Bei erneuter Ausführung der Bereitstellungspipeline werden Ihre Ressourcen nicht neu erstellt, wenn sie bereits vorhanden sind. Sie müssen Ihre Ressourcengruppe oder Ressourcen manuell löschen und die Pipeline dann erneut ausführen. Weitere Informationen dazu, wie Sie dies in der Produktion besser erreichen können, finden Sie im Zusammenfassungsabschnitt.
Beim erneuten Ausführen Ihrer Build-and-Deployment-Pipeline wird Ihre Anwendung ersetzt.
Die nächste Lerneinheit ist eine Wissensbeurteilung, um zu überprüfen, was Sie in diesem Modul gelernt haben.