Automatizace nasazení aplikací do Azure Spring Apps

Poznámka:

Azure Spring Apps je nový název služby Azure Spring Cloud. Přestože má služba nový název, na některých místech uvidíte starý název, protože pracujeme na aktualizaci prostředků, jako jsou snímky obrazovky, videa a diagramy.

Tento článek se vztahuje na: ✔️ Basic/Standard ✔️ Enterprise

V tomto článku se dozvíte, jak pomocí úlohy Azure Spring Apps pro Azure Pipelines nasazovat aplikace.

Nástroje pro kontinuální integraci a průběžné doručování umožňují rychle nasazovat aktualizace do stávajících aplikací s minimálním úsilím a rizikem. Azure DevOps pomáhá organizovat a řídit tyto klíčové úlohy.

Následující video popisuje kompletní automatizaci pomocí nástrojů podle vašeho výběru, včetně Azure Pipelines.


Vytvoření připojení služby Azure Resource Manager

Nejprve vytvořte připojení služby Azure Resource Manager k projektu Azure DevOps. Pokyny najdete v tématu Připojení do Microsoft Azure. Nezapomeňte vybrat stejné předplatné, které používáte pro instanci služby Azure Spring Apps.

Sestavování a nasazování aplikací

Teď můžete vytvářet a nasazovat projekty pomocí řady úkolů. Následující šablona Azure Pipelines definuje proměnné, úlohu .NET Core pro sestavení aplikace a úlohu Azure Spring Apps pro nasazení aplikace.

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)

Nastavení instance Azure Spring Apps a projektu Azure DevOps

Nejprve pomocí následujícího postupu nastavte existující instanci Azure Spring Apps pro použití s Azure DevOps.

  1. Přejděte do instance Azure Spring Apps a pak vytvořte novou aplikaci.
  2. Přejděte na portál Azure DevOps a pak ve zvolené organizaci vytvořte nový projekt. Pokud nemáte organizaci Azure DevOps, můžete si ji zdarma vytvořit.
  3. Vyberte Úložiště a pak naimportujte ukázkový kód Spring Bootu do úložiště.

Vytvoření připojení služby Azure Resource Manager

Dále vytvořte připojení služby Azure Resource Manager k projektu Azure DevOps. Pokyny najdete v tématu Připojení do Microsoft Azure. Nezapomeňte vybrat stejné předplatné, které používáte pro instanci služby Azure Spring Apps.

Sestavování a nasazování aplikací

Teď můžete vytvářet a nasazovat projekty pomocí řady úkolů. Následující části ukazují různé možnosti nasazení aplikace pomocí Azure DevOps.

Nasazení pomocí kanálu

Pokud chcete nasadit pomocí kanálu, postupujte takto:

  1. Vyberte Kanály a pak vytvořte nový kanál s šablonou Mavenu.

  2. Upravte soubor azure-pipelines.yml a nastavte mavenPomFile pole na complete/pom.xml.

  3. Na pravé straně vyberte Zobrazit asistenta a pak vyberte šablonu Azure Spring Apps.

  4. Vyberte připojení služby, které jste vytvořili pro předplatné Azure, a pak vyberte instanci aplikace Azure Spring Apps.

  5. Zakázat použití přípravného nasazení

  6. Nastavte balíček nebo složku tak, aby byly dokončeny, cílit nebo spring-boot-complete-0.0.1-SNAPSHOT.jar.

  7. Výběrem možnosti Přidat přidáte tuto úlohu do kanálu.

    Nastavení kanálu by se mělo shodovat s následujícím obrázkem.

    Snímek obrazovky Azure DevOps s nastavením nového kanálu

    Projekty můžete také sestavit a nasadit pomocí následující šablony kanálu. Tento příklad nejprve definuje úlohu Mavenu pro sestavení aplikace a druhou úlohu, která nasadí soubor JAR pomocí úlohy Azure Spring Apps pro 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. Vyberte Uložit a spusťte a počkejte na dokončení úlohy.

Nasazení s modrou zelenou barvou

Nasazení zobrazené v předchozí části přijímá provoz aplikací okamžitě po nasazení. To vám umožní otestovat aplikaci v produkčním prostředí předtím, než obdrží veškerý zákaznický provoz.

Úprava souboru kanálu

Pokud chcete vytvořit aplikaci stejným způsobem, jak je znázorněno dříve, a nasadit ji do přípravného nasazení, použijte následující šablonu. V tomto příkladu už musí existovat přípravné nasazení. Alternativní přístup najdete v tématu Strategie nasazení blue-green.

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

Použití oddílu Vydané verze

Následující kroky ukazují, jak povolit modré zelené nasazení z části Vydané verze .

  1. Vyberte Kanály a vytvořte nový kanál pro váš artefakt sestavení a publikování Mavenu.

    1. Jako umístění kódu vyberte Git Azure Repos.
    2. Vyberte úložiště, ve kterém se nachází váš kód.
    3. Vyberte šablonu Maven a upravte soubor tak, aby nastavil mavenPomFile pole na complete/pom.xml.
    4. Vyberte Zobrazit asistenta na pravé straně a vyberte šablonu Publikovat artefakty sestavení.
    5. Nastavte cestu k publikování pro dokončení, cíl nebo spring-boot-complete-0.0.1-SNAPSHOT.jar.
    6. Zvolte Uložit a Spustit.
  2. Vyberte Vydané verze a pak Vytvořte verzi.

  3. Přidejte nový kanál a výběrem prázdné úlohy vytvořte úlohu.

  4. V části Fáze vyberte 1 úlohu řádku , 0 úkolu.

    Snímek obrazovky Azure DevOps, který zobrazuje kartu Kanály se zvýrazněným odkazem na 1 úlohu a 0 úloh

    1. Vyberte, + že chcete do úlohy přidat úkol.
    2. Vyhledejte šablonu Azure Spring Apps a pak vyberte Přidat a přidejte úkol do úlohy.
    3. Vyberte Azure Spring Apps Deploy: k úpravě úlohy.
    4. Vyplňte tuto úlohu informacemi o aplikaci a pak zakažte použití přípravného nasazení.
    5. Pokud neexistuje, povolte možnost Vytvořit nové přípravné nasazení, zadejte název v části Nasazení.
    6. Chcete-li uložit tento úkol, vyberte Uložit .
    7. Vyberte OK.
  5. Vyberte Kanál a pak vyberte Přidat artefakt.

    1. V části Zdroj (kanál buildu) vyberte kanál vytvořený dříve.
    2. Vyberte Přidat a pak Uložit.
  6. V části Fáze vyberte 1 úlohu, 1 úkol.

  7. Přejděte na úlohu Nasazení Azure Spring Apps ve fázi 1 a pak vyberte tři tečky vedle položky Balíček nebo složka.

  8. V dialogovém okně vyberte spring-boot-complete-0.0.1-SNAPSHOT.jar a pak vyberte OK.

    Snímek obrazovky Azure DevOps s dialogovým oknem Vybrat soubor nebo složku

  9. Vyberte, + že chcete do úlohy přidat další úlohu Azure Spring Apps .

  10. Změňte akci na Nastavení produkčního nasazení.

  11. Vyberte Uložit a pak vytvořte verzi , aby se nasazení spustilo automaticky.

Pokud chcete ověřit aktuální stav vydané verze aplikace, vyberte Zobrazit verzi. Po dokončení této úlohy přejděte na web Azure Portal a ověřte stav aplikace.

Nasazení ze zdroje

Pokud chcete nasadit přímo do Azure bez samostatného kroku sestavení, použijte následující šablonu kanálu.

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

Nasazení z vlastní image

Pokud chcete nasadit přímo z existující image kontejneru, použijte následující šablonu kanálu.

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

Nasazení a zadání tvůrce (jenom plán Enterprise)

Pokud používáte plán Azure Spring Apps Enterprise, můžete také určit, který tvůrce se má použít k nasazení akcí pomocí této builder možnosti, jak je znázorněno v následujícím příkladu. Další informace najdete v tématu Použití služby 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>'

Další kroky