Übung: Bereitstellen einer Spring Boot-Beispielanwendung

Abgeschlossen

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.

Screenshot of the Azure App Service Deployment Center.

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.

  1. Navigieren Sie im Azure-Portal zu Ihrer Azure App Service-Web-App.

  2. Erweitern Sie Bereitstellung im linken Bereich, und wählen Sie Bereitstellungscenter aus.

  3. Wählen Sie in der Dropdownliste Quelle unter Continuous Deployment (CI/CD) die Option GitHub aus.

  4. 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.)

  5. 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.

  6. Überprüfen Sie Ihre Auswahl auf der letzten Seite, und zeigen Sie die Workflowdatei, die an das Repository committet, in der Vorschau an.

  7. 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

  1. 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.

  2. 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.

  3. 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.

  4. Ö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:

  1. Wählen Sie auf der Registerkarte Verbinden die Option GitHub (YAML-Datei) aus.
  2. Wählen Sie auf der Registerkarte Auswählen das GitHub-Repository aus, das Ihre Vorlage enthält.
  3. Wählen Sie auf der Registerkarte Konfigurieren die Option aus, um eine Vorhandene Azure Pipelines YAML-Datei zu verwenden.
  4. Wählen Sie dieses Mal den Pfad „/azuredevops/build_deploy.yml“
  5. 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:

  1. Wählen Sie oben rechts Variablen aus.
  2. Fügen Sie eine Variable mit dem Namen serviceConnection mit dem Wert als Namen Ihrer Dienstverbindung hinzu.
  3. Wählen Sie in der unteren rechten Ecke OK aus, um die Variable zu speichern.
  4. 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).
  5. Wählen Sie OK aus, um die Variable zu speichern.
  6. Klicken Sie auf Speichern in der unteren rechten Ecke, um die beiden Variablen zu speichern.

Screenshot displaying the new variables.

Beobachten der Ausführung der Pipeline

  1. Auswählen von &&, um die Pipeline zu speichern und auszuführen
  2. Verfolgen Sie den Buildprozess wie bei der Bereitstellungspipeline durch die einzelnen Phasen und Schritte.
  3. Vergewissern Sie sich, dass Ihre Java-Anwendung bereitgestellt wurde, mit Ihrer MySQL-Datenbank verbunden ist und Daten zurückgibt.

Screenshot displaying the new Azure Pipeline run.

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.