Automatisieren von Anwendungsbereitstellungen für Azure Spring Apps

Hinweis

Die Pläne Basic, Standard und Enterprise gelten ab Mitte März 2025 als veraltet und werden über einen Zeitraum von 3 Jahren eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie in der Ankündigung zur Einstellung von Azure Spring Apps.

Der Standardverbrauchs- und dedizierte Plan wird ab dem 30. September 2024 als veraltet gekennzeichnet und nach sechs Monaten vollständig eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie unter Migrieren vom Standardverbrauchs- und dedizierten Plan von Azure Spring Apps zu Azure Container Apps.

Dieser Artikel gilt für: ✔️ Basic/Standard ✔️ Enterprise

In diesem Artikel erfahren Sie, wie Sie den Azure Spring Apps-Task für Azure Pipelines zum Bereitstellen von Anwendungen verwenden.

Continuous Integration- und Continuous Delivery-Tools (CI/CD) ermöglichen Ihnen die schnelle Bereitstellung von Updates für vorhandene Anwendungen mit minimalem Aufwand und Risiko. Mit Azure DevOps können Sie diese wichtigen Aufträge organisieren und steuern.

Im folgenden Video wird die End-to-End-Automatisierung mit Tools Ihrer Wahl beschrieben, einschließlich Azure Pipelines.


Erstellen einer Azure Resource Manager-Dienstverbindung

Erstellen Sie zunächst eine Azure Resource Manager-Dienstverbindung mit Ihrem Azure DevOps-Projekt. Anweisungen finden Sie unter Herstellen einer Verbindung mit Microsoft Azure. Achten Sie darauf, dasselbe Abonnement auszuwählen, das Sie für Ihre Azure Spring Apps-Dienstinstanz verwenden.

Erstellen und Bereitstellen von Apps

Sie können jetzt Ihre Projekte mit einer Reihe von Tasks erstellen und bereitstellen. Die folgende Azure Pipelines-Vorlage definiert Variablen, einen .NET Core-Task zum Erstellen der Anwendung und einen Azure Spring Apps-Task zur Bereitstellung der Anwendung.

variables:
  workingDirectory: './steeltoe-sample'
  planetMainEntry: 'Microsoft.Azure.SpringCloud.Sample.PlanetWeatherProvider.dll'
  solarMainEntry: 'Microsoft.Azure.SpringCloud.Sample.SolarSystemWeather.dll'
  planetAppName: 'planet-weather-provider'
  solarAppName: 'solar-system-weather'
  serviceName: '<your service name>'

steps:
# Restore, build, publish and package the zipped planet app
- task: DotNetCoreCLI@2
  inputs:
    command: 'publish'
    publishWebProjects: false
    arguments: '--configuration Release'
    zipAfterPublish: false
    modifyOutputPath: false
    workingDirectory: $(workingDirectory)

# Deploy the planet app
- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<Service Connection Name>'
    Action: 'Deploy'
    AzureSpringCloud: $(serviceName)
    AppName: 'testapp'
    DeploymentType: 'Artifacts'
    UseStagingDeployment: false
    DeploymentName: 'default'
    Package: $(workingDirectory)/src/$(planetAppName)/publish-deploy-planet.zip
    RuntimeVersion: 'NetCore_31'
    DotNetCoreMainEntryPath: $(planetMainEntry)

# Deploy the solar app
- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<Service Connection Name>'
    Action: 'Deploy'
    AzureSpringCloud: $(serviceName)
    AppName: 'testapp'
    DeploymentType: 'Artifacts'
    UseStagingDeployment: false
    DeploymentName: 'default'
    Package: $(workingDirectory)/src/$(solarAppName)/publish-deploy-solar.zip
    RuntimeVersion: 'NetCore_31'
    DotNetCoreMainEntryPath: $(solarMainEntry)

Einrichten einer Azure Spring Apps-Instanz und eines Azure DevOps-Projekts

Verwenden Sie zunächst die folgenden Schritte, um eine vorhandene Azure Spring Apps-Instanz für die Verwendung mit Azure DevOps einzurichten.

  1. Wechseln Sie zu Ihrer Azure Spring Apps-Instanz, und erstellen Sie dann eine neue App.
  2. Wechseln Sie zum Azure DevOps-Portal, und erstellen Sie dann ein neues Projekt unter Ihrer ausgewählten Organisation. Falls Sie über keine Azure DevOps-Organisation verfügen, können Sie kostenlos eine erstellen.
  3. Wählen Sie Repos (Repositorys) aus, und importieren Sie dann den Spring Boot-Democode in das Repository.

Erstellen einer Azure Resource Manager-Dienstverbindung

Erstellen Sie als nächstes eine Azure Resource Manager-Dienstverbindung mit Ihrem Azure DevOps-Projekt. Anweisungen finden Sie unter Herstellen einer Verbindung mit Microsoft Azure. Achten Sie darauf, dasselbe Abonnement auszuwählen, das Sie für Ihre Azure Spring Apps-Dienstinstanz verwenden.

Erstellen und Bereitstellen von Apps

Sie können jetzt Ihre Projekte mit einer Reihe von Tasks erstellen und bereitstellen. In den folgenden Abschnitten werden verschiedene Optionen für die Bereitstellung Ihrer App mit Azure DevOps erläutert.

Bereitstellen mithilfe einer Pipeline

Gehen Sie wie folgt vor, um die Bereitstellung mithilfe einer Pipeline vorzunehmen:

  1. Wählen Sie Pipelines aus, und erstellen Sie dann eine neue Pipeline mit einer Maven-Vorlage.

  2. Bearbeiten Sie die Datei azure-pipelines.yml, um das Feld mavenPomFile auf 'complete/pom.xml' festzulegen.

  3. Wählen Sie auf der rechten Seite Assistenten anzeigen und dann die Azure Spring Apps-Vorlage aus.

  4. Wählen Sie die Dienstverbindung aus, die Sie für Ihr Azure-Abonnement erstellt haben, und wählen Sie dann Ihre Azure Spring Apps-Instanz sowie die App-Instanz aus.

  5. Deaktivieren Sie Use Staging Deployment (Stagingbereitstellung verwenden).

  6. Legen Sie Paket oder Ordner auf complete/target/spring-boot-complete-0.0.1-SNAPSHOT.jar fest.

  7. Wählen Sie Hinzufügen aus, um diesen Task Ihrer Pipeline hinzuzufügen.

    Ihre Pipelineeinstellungen sollten der folgenden Abbildung entsprechen.

    Screenshot von Azure DevOps, der die Neuen Pipelineeinstellungen zeigt.

    Sie können Ihre Projekte auch mithilfe der folgenden Pipelinevorlage erstellen und bereitstellen. In diesem Beispiel wird zunächst ein Maven-Task zum Erstellen der Anwendung definiert, gefolgt von einem zweiten Task, der die JAR-Datei mithilfe des Azure Spring Apps-Tasks für Azure Pipelines bereitstellt.

    steps:
    - task: Maven@3
      inputs:
        mavenPomFile: 'complete/pom.xml'
    - task: AzureSpringCloud@0
      inputs:
        azureSubscription: '<your service connection name>'
        Action: 'Deploy'
        AzureSpringCloud: <your Azure Spring Apps service>
        AppName: <app-name>
        DeploymentType: 'Artifacts'
        UseStagingDeployment: false
        DeploymentName: 'default'
        Package: ./target/your-result-jar.jar
    
  8. Wählen Sie Speichern und ausführen aus, und warten Sie, bis der Auftrag abgeschlossen ist.

Blaugrün-Bereitstellungen

Die im vorherigen Abschnitt gezeigte Bereitstellung empfängt bei der Bereitstellung sofort Anwendungdatenverkehr. Dadurch können Sie die Anwendung in der Produktionsumgebung testen, bevor sie Kundendatenverkehr empfängt.

Bearbeiten der Pipelinedatei

Verwenden Sie die folgende Vorlage, um die Anwendung auf dieselbe Weise wie zuvor zu erstellen und in einer Stagingbereitstellung bereitzustellen. In diesem Beispiel muss die Stagingbereitstellung bereits vorhanden sein. Einen alternativen Ansatz finden Sie unter Strategien für Blau-Grün-Bereitstellungen.

steps:
- task: Maven@3
  inputs:
    mavenPomFile: 'pom.xml'
- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<your service connection name>'
    Action: 'Deploy'
    AzureSpringCloud: <your Azure Spring Apps service>
    AppName: <app-name>
    DeploymentType: 'Artifacts'
    UseStagingDeployment: true
    Package: ./target/your-result-jar.jar
- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<your service connection name>'
    Action: 'Set Production'
    AzureSpringCloud: <your Azure Spring Apps service>
    AppName: <app-name>
    UseStagingDeployment: true

Verwenden des Abschnitts „Releases“

Die folgenden Schritte zeigen Ihnen, wie Sie eine Blau-Grün-Bereitstellung im Abschnitt Releases aktivieren.

  1. Wählen Sie Pipelines aus, und erstellen Sie eine neue Pipeline für Ihren Maven-Build, und veröffentlichen Sie das Artefakt.

    1. Wählen Sie Azure Repos Git als Codespeicherort aus.
    2. Wählen Sie ein Repository aus, in dem sich Ihr Code befindet.
    3. Wählen Sie die Maven-Vorlage und ändern Sie die Datei, um das Feld mavenPomFile auf complete/pom.xml festzulegen.
    4. Wählen Sie auf der rechten Seite Assistent anzeigen, und wählen Sie die Vorlage Buildartefakte veröffentlichen aus.
    5. Legen Sie Path to publish (Pfad zum Veröffentlichen) auf complete/target/spring-boot-complete-0.0.1-SNAPSHOT.jar fest.
    6. Klicken Sie auf Speichern und ausführen.
  2. Wählen Sie Releases, dann Release erstellen aus.

  3. Fügen Sie eine neue Pipeline hinzu, und wählen Sie Leerer Auftrag aus, um einen Auftrag zu erstellen.

  4. Wählen Sie unter Stages (Phasen) die Zeile 1 Auftrag, 0 Task aus.

    Screenshot von Azure DevOps, auf dem die Registerkarte „Pipelines“ mit hervorgehobenem Link „1 Auftrag, 0 Aufgaben“ angezeigt wird.

    1. Wählen Sie + aus, um dem Auftrag einen Task hinzuzufügen.
    2. Suchen Sie nach der Azure Spring Apps-Vorlage, und wählen Sie dann Hinzufügen aus, um den Task dem Auftrag hinzuzufügen.
    3. Wählen Sie Azure Spring Apps-Bereitstellung aus, um den Task zu bearbeiten.
    4. Füllen Sie diesen Task mit den Informationen zu Ihrer App, und deaktivieren Sie anschließend die Option Use Staging Deployment (Stagingbereitstellung verwenden).
    5. Aktivieren Sie Create a new staging deployment if one does not exist (Neue Stagingbereitstellung erstellen, wenn keine vorhanden ist), und geben Sie dann einen Namen in Deployment (Bereitstellung) ein.
    6. Wählen Sie Speichern aus, um diesen Task zu speichern.
    7. Wählen Sie OK aus.
  5. Wählen Sie Pipeline und dann Artefakt hinzufügen aus.

    1. Wählen Sie unter Quelle (Buildpipeline) die zuvor erstellte Pipeline aus.
    2. Wählen Sie Hinzufügen und dann Speichern aus.
  6. Wählen Sie 1 Auftrag, 1 Task unter Stages (Phasen) aus.

  7. Navigieren Sie zum Task Azure Spring Apps-Bereitstellung in Phase 1, und wählen Sie dann die Auslassungszeichen neben Paket oder Ordner aus.

  8. Wählen Sie spring-boot-complete-0.0.1-SNAPSHOT.jar im Dialogfeld und dann OK aus.

    Screenshot von Azure DevOps, in dem das Dialogfeld „Datei oder Ordner auswählen“ angezeigt wird.

  9. Wählen Sie das Pluszeichen (+) aus, um dem Auftrag einen weiteren Azure Spring Apps-Task hinzuzufügen.

  10. Ändern Sie die Aktion in Set Production Deployment (Produktionsbereitstellung festlegen).

  11. Wählen Sie Speichern und dann Release erstellen aus, um die Bereitstellung automatisch zu starten.

Um den aktuellen Releasestatus Ihrer App zu überprüfen, wählen Sie Release anzeigen aus. Nachdem dieser Task abgeschlossen ist, besuchen Sie das Azure-Portal, um Ihren App-Status zu überprüfen.

Bereitstellen aus der Quelle

Verwenden Sie die folgende Pipelinevorlage, um die Bereitstellung ohne separaten Buildschritt direkt in Azure bereitzustellen.

- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<your service connection name>'
    Action: 'Deploy'
    AzureSpringCloud: <your Azure Spring Apps service>
    AppName: <app-name>
    DeploymentType: 'Artifacts'
    UseStagingDeployment: false
    DeploymentName: 'default'
    Package: $(Build.SourcesDirectory)

Bereitstellen aus einem benutzerdefinierten Image

Um direkt aus einem vorhandenen Containerimage bereitzustellen, verwenden Sie die folgende Pipelinevorlage.

- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<your service connection name>'
    Action: 'Deploy'
    AzureSpringCloud: '<your Azure Spring Apps service>'
    AppName: '<app-name>'
    DeploymentType: 'CustomContainer'
    UseStagingDeployment: false
    DeploymentName: 'default'
    ContainerRegistry: 'docker.io'  # or your Azure Container Registry, e.g: 'contoso.azurecr.io'
    RegistryUsername: '$(username)'
    RegistryPassword: '$(password)'
    ContainerImage: '<your image tag>'

Bereitstellen und Angeben eines Generators (nur Enterprise-Tarif)

Wenn Sie den Azure Spring Apps Enterprise-Plan verwenden, können Sie auch angeben, welcher Generator für die Bereitstellung von Aktionen mit der builder-Option verwendet werden soll, wie im folgenden Beispiel gezeigt. Weitere Informationen finden Sie unter Verwenden des Tanzu Build Service.

- task: AzureSpringCloud@0
  inputs:
    azureSubscription: '<your-service-connection-name>'
    Action: 'Deploy'
    AzureSpringCloud: '<your-Azure-Spring-Apps-service-instance-name>'
    AppName: '<app-name>'
    UseStagingDeployment: false
    DeploymentName: 'default'
    Package: './target/your-result-jar.jar'
    Builder: '<your-Tanzu-Build-Service-Builder-resource>'

Nächste Schritte