Automatyzowanie wdrożeń aplikacji w usłudze Azure Spring Apps

Uwaga

Azure Spring Apps to nowa nazwa usługi Azure Spring Cloud. Mimo że usługa ma nową nazwę, stara nazwa będzie widoczna w niektórych miejscach przez pewien czas, ponieważ pracujemy nad aktualizowaniem zasobów, takich jak zrzuty ekranu, filmy wideo i diagramy.

Ten artykuł dotyczy: ✔️ Podstawowa/Standardowa ✔️ Enterprise

W tym artykule pokazano, jak wdrożyć aplikacje przy użyciu zadania usługi Azure Spring Apps dla usługi Azure Pipelines .

Narzędzia ciągłej integracji i ciągłego dostarczania umożliwiają szybkie wdrażanie aktualizacji istniejących aplikacji przy minimalnym nakładzie pracy i ryzyku. Usługa Azure DevOps ułatwia organizowanie i kontrolowanie tych kluczowych zadań.

W poniższym filmie wideo opisano kompleksową automatyzację przy użyciu wybranego narzędzia, w tym usługi Azure Pipelines.


Tworzenie połączenia usługi Azure Resource Manager

Najpierw utwórz połączenie usługi Azure Resource Manager z projektem usługi Azure DevOps. Aby uzyskać instrukcje, zobacz Połączenie do platformy Microsoft Azure. Pamiętaj, aby wybrać tę samą subskrypcję, której używasz dla wystąpienia usługi Azure Spring Apps.

Kompilowanie i wdrażanie aplikacji

Teraz możesz kompilować i wdrażać projekty przy użyciu serii zadań. Poniższy szablon usługi Azure Pipelines definiuje zmienne, zadanie platformy .NET Core do kompilowania aplikacji oraz zadanie usługi Azure Spring Apps w celu wdrożenia aplikacji.

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)

Konfigurowanie wystąpienia usługi Azure Spring Apps i projektu usługi Azure DevOps

Najpierw wykonaj następujące kroki, aby skonfigurować istniejące wystąpienie usługi Azure Spring Apps do użycia z usługą Azure DevOps.

  1. Przejdź do wystąpienia usługi Azure Spring Apps, a następnie utwórz nową aplikację.
  2. Przejdź do portalu usługi Azure DevOps, a następnie utwórz nowy projekt w wybranej organizacji. Jeśli nie masz organizacji usługi Azure DevOps, możesz go utworzyć bezpłatnie.
  3. Wybierz pozycję Repozytoria, a następnie zaimportuj kod demonstracyjny spring boot do repozytorium.

Tworzenie połączenia usługi Azure Resource Manager

Następnie utwórz połączenie usługi Azure Resource Manager z projektem usługi Azure DevOps. Aby uzyskać instrukcje, zobacz Połączenie do platformy Microsoft Azure. Pamiętaj, aby wybrać tę samą subskrypcję, której używasz dla wystąpienia usługi Azure Spring Apps.

Kompilowanie i wdrażanie aplikacji

Teraz możesz kompilować i wdrażać projekty przy użyciu serii zadań. W poniższych sekcjach przedstawiono różne opcje wdrażania aplikacji przy użyciu usługi Azure DevOps.

Wdrażanie przy użyciu potoku

Aby wdrożyć przy użyciu potoku, wykonaj następujące kroki:

  1. Wybierz pozycję Potoki, a następnie utwórz nowy potok przy użyciu szablonu narzędzia Maven.

  2. Edytuj plik azure-pipelines.yml, aby ustawić mavenPomFile pole na wartość "complete/pom.xml".

  3. Wybierz pozycję Pokaż asystenta po prawej stronie, a następnie wybierz szablon Azure Spring Apps .

  4. Wybierz połączenie usługi utworzone dla subskrypcji platformy Azure, a następnie wybierz wystąpienie usługi Azure Spring Apps i wystąpienie aplikacji.

  5. Wyłącz opcję Użyj wdrożenia przejściowego.

  6. Ustaw wartość Package or folder na complete/target/spring-boot-complete-0.0.1-SNAPSHOT.jar.

  7. Wybierz pozycję Dodaj , aby dodać to zadanie do potoku.

    Ustawienia potoku powinny być zgodne z poniższą ilustracją.

    Zrzut ekranu przedstawiający ustawienia nowego potoku w usłudze Azure DevOps.

    Projekty można również kompilować i wdrażać przy użyciu następującego szablonu potoku. W tym przykładzie najpierw zdefiniowano zadanie maven w celu skompilowania aplikacji, a następnie drugie zadanie, które wdraża plik JAR przy użyciu zadania Usługi Azure Spring Apps dla usługi Azure Pipelines.

    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. Wybierz pozycję Zapisz i uruchom, a następnie poczekaj na zakończenie zadania.

Wdrożenia niebiesko-zielone

Wdrożenie pokazane w poprzedniej sekcji natychmiast odbiera ruch aplikacji po wdrożeniu. Dzięki temu można przetestować aplikację w środowisku produkcyjnym przed odebraniem dowolnego ruchu klienta.

Edytowanie pliku potoku

Aby skompilować aplikację w taki sam sposób, jak pokazano wcześniej i wdrożyć ją we wdrożeniu przejściowym, użyj następującego szablonu. W tym przykładzie wdrożenie przejściowe musi już istnieć. Aby zapoznać się z alternatywnym podejściem, zobacz Strategie wdrażania niebieski-zielony.

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

Korzystanie z sekcji Wydania

W poniższych krokach pokazano, jak włączyć wdrożenie niebiesko-zielone w sekcji Wydania .

  1. Wybierz pozycję Potoki i utwórz nowy potok dla kompilacji i publikowania artefaktu narzędzia Maven.

    1. Wybierz pozycję Azure Repos Git dla swojej lokalizacji kodu.
    2. Wybierz repozytorium, w którym znajduje się kod.
    3. Wybierz szablon maven i zmodyfikuj plik, aby ustawić mavenPomFile pole na complete/pom.xml.
    4. Wybierz pozycję Pokaż asystenta po prawej stronie i wybierz szablon Publikuj artefakty kompilacji .
    5. Ustaw ścieżkę do publikowania , aby ukończyć /docelowy/spring-boot-complete-0.0.1-SNAPSHOT.jar.
    6. Wybierz pozycję Zapisz i uruchom.
  2. Wybierz pozycję Wydania, a następnie pozycję Utwórz wydanie.

  3. Dodaj nowy potok i wybierz pozycję Puste zadanie , aby utworzyć zadanie.

  4. W obszarze Etapy wybierz wiersz 1 zadanie, 0

    Zrzut ekranu usługi Azure DevOps przedstawiający kartę Potoki z wyróżnionym linkiem 1 zadania 0.

    1. Wybierz element , + aby dodać zadanie do zadania.
    2. Wyszukaj szablon Azure Spring Apps, a następnie wybierz pozycję Dodaj, aby dodać zadanie do zadania.
    3. Wybierz pozycję Azure Spring Apps Deploy (Wdrażanie usługi Azure Spring Apps): aby edytować zadanie.
    4. Wypełnij to zadanie informacjami aplikacji, a następnie wyłącz opcję Użyj wdrożenia przejściowego.
    5. Włącz opcję Utwórz nowe wdrożenie przejściowe, jeśli nie istnieje, a następnie wprowadź nazwę we wdrożeniu.
    6. Wybierz pozycję Zapisz , aby zapisać to zadanie.
    7. Wybierz przycisk OK.
  5. Wybierz pozycję Potok, a następnie wybierz pozycję Dodaj artefakt.

    1. W obszarze Źródło (potok kompilacji) wybierz utworzony wcześniej potok.
    2. Wybierz pozycję Dodaj, a następnie pozycję Zapisz.
  6. Wybierz 1 zadanie, 1 zadanie w obszarze Etapy.

  7. Przejdź do zadania Azure Spring Apps Deploy w etapie 1, a następnie wybierz wielokropek obok pozycji Pakiet lub folder.

  8. Wybierz spring-boot-complete-0.0.1-SNAPSHOT.jar w oknie dialogowym, a następnie wybierz przycisk OK.

    Zrzut ekranu usługi Azure DevOps przedstawiający okno dialogowe Wybieranie pliku lub folderu.

  9. Wybierz pozycję , + aby dodać kolejne zadanie usługi Azure Spring Apps do zadania.

  10. Zmień akcję na Ustaw wdrożenie produkcyjne.

  11. Wybierz pozycję Zapisz, a następnie utwórz wydanie , aby automatycznie uruchomić wdrożenie.

Aby sprawdzić bieżący stan wydania aplikacji, wybierz pozycję Wyświetl wydanie. Po zakończeniu tego zadania odwiedź witrynę Azure Portal, aby zweryfikować stan aplikacji.

Wdrażanie ze źródła

Aby wdrożyć bezpośrednio na platformie Azure bez oddzielnego kroku kompilacji, użyj następującego szablonu potoku.

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

Wdrażanie z obrazu niestandardowego

Aby wdrożyć bezpośrednio z istniejącego obrazu kontenera, użyj następującego szablonu potoku.

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

Wdrażanie i określanie konstruktora (tylko plan przedsiębiorstwa)

Jeśli używasz planu Usługi Azure Spring Apps Enterprise, możesz również określić, który konstruktor będzie używany do wdrażania akcji przy użyciu builder opcji , jak pokazano w poniższym przykładzie. Aby uzyskać więcej informacji, zobacz Use Tanzu Build Service (Korzystanie z usługi 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>'

Następne kroki