Oefening: de webtoepassing implementeren in Azure App Service

Voltooid

In deze module maakt u een pijplijn met meerdere fases om uw toepassing te bouwen en te implementeren in Azure App Service. U leert het volgende:

  • Maak een App Service-exemplaar om uw webtoepassing te hosten.
  • Maak een pijplijn met meerdere fases.
  • Implementeren in Azure App Service.

Het App Service-exemplaar maken

  1. Meld u aan bij de Azure Portal.

  2. Selecteer App Services- in het linkerdeelvenster.

  3. Selecteer >web-app maken om een nieuwe web-app te maken.

  4. Voer op het tabblad Basisinformatie de volgende waarden in.

    Instelling Waarde
    projectdetails
    Abonnement uw abonnement
    Resourcegroep Selecteer Nieuwemaken en voer tailspin-space-game-rgin en selecteer OK.
    Instantie Details
    Naam Geef een unieke naam op, zoals tailspin-space-game-web-1234. Deze naam moet uniek zijn in Azure. Het wordt onderdeel van de domeinnaam. Kies in de praktijk een naam die uw service beschrijft. Noteer de naam voor later.
    Uitgeven Code
    Runtime stack .NET 6 (LTS)
    Besturingssysteem Linux
    Regio Selecteer een regio, bij voorkeur een regio bij u in de buurt.
    prijsplannen
    Linux-abonnement Accepteer de standaardwaarde.
    Prijsplan Selecteer de Basic B1 prijscategorie in de vervolgkeuzelijst.
  5. Selecteer Beoordelen enmaken, controleer het formulier en selecteer vervolgens maken. Het duurt even voordat de implementatie is voltooid.

  6. Wanneer de implementatie is voltooid, selecteert u Ga naar de resource. In de App Service Essentials worden details weergegeven met betrekking tot uw implementatie.

    Schermopname met implementatiedetails, inclusief de implementatie-URL.

  7. Selecteer de URL om de status van uw App Service te controleren.

    Een schermopname van een webbrowser met de standaard startpagina van App Service.

Belangrijk

In de Uw Azure DevOps-omgeving opschonen pagina in deze module wordt uitgelegd hoe u uw App Service-exemplaar verwijdert nadat u klaar bent. Opschonen zorgt ervoor dat er geen kosten in rekening worden gebracht voor Azure-resources nadat u deze module hebt voltooid. Zorg ervoor dat u de opschoonstappen volgt, zelfs als u deze module niet voltooit.

Een serviceverbinding maken

Belangrijk

Zorg ervoor dat u bent aangemeld bij Azure en Azure DevOps onder hetzelfde Microsoft-account.

  1. Ga in Azure DevOps naar het project Space Game - web - Release.

  2. Selecteer in de linkerbenedenhoek van de pagina Project-instellingen.

  3. Selecteer onder Pipelinesde optie Service-verbindingen.

  4. Selecteer nieuwe serviceverbindingen selecteer vervolgens Azure Resource Manager- en selecteer vervolgens Volgende.

  5. Selecteer service-principal (automatisch)en selecteer vervolgens volgende.

  6. Vul de vereiste velden als volgt in: Als u hierom wordt gevraagd, meldt u zich aan bij uw Microsoft-account.

    Veld Waarde
    Bereikniveau Abonnement
    Abonnement Uw Azure-abonnement
    Resourcegroep tailspin-space-game-rg
    Serviceverbindingsnaam Resource Manager - Tailspin - Ruimtespel
  7. Zorg ervoor dat Toegangsmachtigingen verlenen aan alle pijplijnen is geselecteerd.

  8. Selecteer opslaan.

Voeg de buildfase toe aan uw pijplijn

Met een pijplijn met meerdere fasen kunt u afzonderlijke fasen definiëren die uw wijziging doorloopt terwijl deze wordt gepromoveerd via de pijplijn. Elke fase definieert de agent, variabelen en stappen die nodig zijn om die fase van de pijplijn uit te voeren. In deze sectie definieert u één fase om de build uit te voeren. U definieert een tweede fase voor het implementeren van de webtoepassing in App Service.

Als u uw bestaande buildconfiguratie wilt converteren naar een pijplijn met meerdere fasen, voegt u een stages sectie toe aan uw configuratie en voegt u vervolgens een of meer stage secties toe voor elke fase van uw pijplijn. Fasen worden onderverdeeld in taken. Dit zijn een reeks stappen die opeenvolgend als een eenheid worden uitgevoerd.

  1. Open vanuit uw project in Visual Studio Code azure-pipelines.yml en vervang de inhoud door deze code:

    trigger:
    - '*'
    
    variables:
      buildConfiguration: 'Release'
    
    stages:
    - stage: 'Build'
      displayName: 'Build the web application'
      jobs: 
      - job: 'Build'
        displayName: 'Build job'
        pool:
          vmImage: 'ubuntu-20.04'
          demands:
          - npm
    
        variables:
          wwwrootDir: 'Tailspin.SpaceGame.Web/wwwroot'
          dotnetSdkVersion: '6.x'
    
        steps:
        - task: UseDotNet@2
          displayName: 'Use .NET SDK $(dotnetSdkVersion)'
          inputs:
            version: '$(dotnetSdkVersion)'
    
        - task: Npm@1
          displayName: 'Run npm install'
          inputs:
            verbose: false
    
        - script: './node_modules/.bin/node-sass $(wwwrootDir) --output $(wwwrootDir)'
          displayName: 'Compile Sass assets'
    
        - task: gulp@1
          displayName: 'Run gulp tasks'
    
        - script: 'echo "$(Build.DefinitionName), $(Build.BuildId), $(Build.BuildNumber)" > buildinfo.txt'
          displayName: 'Write build info'
          workingDirectory: $(wwwrootDir)
    
        - task: DotNetCoreCLI@2
          displayName: 'Restore project dependencies'
          inputs:
            command: 'restore'
            projects: '**/*.csproj'
    
        - task: DotNetCoreCLI@2
          displayName: 'Build the project - $(buildConfiguration)'
          inputs:
            command: 'build'
            arguments: '--no-restore --configuration $(buildConfiguration)'
            projects: '**/*.csproj'
    
        - task: DotNetCoreCLI@2
          displayName: 'Publish the project - $(buildConfiguration)'
          inputs:
            command: 'publish'
            projects: '**/*.csproj'
            publishWebProjects: false
            arguments: '--no-build --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/$(buildConfiguration)'
            zipAfterPublish: true
    
        - publish: '$(Build.ArtifactStagingDirectory)'
          artifact: drop
    
  2. Voer vanuit de geïntegreerde terminal de volgende commando's uit om uw wijzigingen toe te voegen, door te voeren en ze vervolgens naar uw externe vertakking te pushen.

    git add azure-pipelines.yml
    git commit -m "Add a build stage"
    git push origin release-pipeline
    
  3. Navigeer in Azure Pipelines naar uw pijplijn om de logboeken weer te geven.

  4. Nadat de build is voltooid, selecteert u de knop Terug om terug te keren naar de overzichtspagina en controleert u de status van uw pijplijn en gepubliceerde artefact.

    Een schermopname van Azure Pipelines met het taakoverzicht.

De ontwikkelomgeving maken

Een -omgeving is een abstracte weergave van uw implementatieomgeving. U kunt omgevingen gebruiken om specifieke criteria voor uw release vast te stellen, zoals welke pijplijn is gemachtigd om naar de omgeving uit te rollen. Omgevingen kunnen ook worden gebruikt om handmatige goedkeuringen in te stellen, zodat een specifieke gebruiker of groep goedkeuring kan verlenen voordat de implementatie wordt hervat.

  1. In Azure Pipelines selecteer Omgevingen.

    Een schermopname van Azure Pipelines met de locatie van de menuoptie Omgevingen.

  2. Selecteer Omgevingmaken.

  3. Voer bij Naamde tekst devin.

  4. Laat de resterende velden op de standaardwaarden staan.

  5. Selecteer maken.

De naam van uw web-app opslaan in een pijplijnvariabele

De Deploy stap die we maken, gebruikt de naam om te bepalen naar welk App Service-exemplaar moet worden gedeployd, bijvoorbeeld tailspin-space-game-web-1234.

Hoewel u deze naam in uw pijplijnconfiguratie kunt codeeren, kunt u deze definiëren als een variabele, zodat uw configuratie beter kan worden gebruikt.

  1. Selecteer in Azure DevOps Pipelines en selecteer vervolgens Library.

    Schermopname van Azure Pipelines met de locatie van het menu Bibliotheek.

  2. Selecteer + variabelegroep om een nieuwe variabelegroep te maken.

  3. Voer Release- in voor de variabelegroepnaam.

  4. Selecteer toevoegen onder Variabelen om een nieuwe variabele toe te voegen.

  5. Voer WebAppName in voor de naam van de variabele en de naam van uw App Service-exemplaar voor de waarde: b.v. tailspin-space-game-web-1234.

  6. Selecteer opslaan.

De implementatiefase toevoegen aan uw pijplijn

We breiden onze pijplijn uit door een implementatiefase toe te voegen om de Space Game- te implementeren in App Service met behulp van de download- en AzureWebApp@1-taken om het build-artefact te downloaden en vervolgens te implementeren.

  1. Vervang vanuit Visual Studio Code de inhoud van azure-pipelines.yml door de volgende yaml:

    trigger:
    - '*'
    
    variables:
      buildConfiguration: 'Release'
    
    stages:
    - stage: 'Build'
      displayName: 'Build the web application'
      jobs: 
      - job: 'Build'
        displayName: 'Build job'
        pool:
          vmImage: 'ubuntu-20.04'
          demands:
          - npm
    
        variables:
          wwwrootDir: 'Tailspin.SpaceGame.Web/wwwroot'
          dotnetSdkVersion: '6.x'
    
        steps:
        - task: UseDotNet@2
          displayName: 'Use .NET SDK $(dotnetSdkVersion)'
          inputs:
            version: '$(dotnetSdkVersion)'
    
        - task: Npm@1
          displayName: 'Run npm install'
          inputs:
            verbose: false
    
        - script: './node_modules/.bin/node-sass $(wwwrootDir) --output $(wwwrootDir)'
          displayName: 'Compile Sass assets'
    
        - task: gulp@1
          displayName: 'Run gulp tasks'
    
        - script: 'echo "$(Build.DefinitionName), $(Build.BuildId), $(Build.BuildNumber)" > buildinfo.txt'
          displayName: 'Write build info'
          workingDirectory: $(wwwrootDir)
    
        - task: DotNetCoreCLI@2
          displayName: 'Restore project dependencies'
          inputs:
            command: 'restore'
            projects: '**/*.csproj'
    
        - task: DotNetCoreCLI@2
          displayName: 'Build the project - $(buildConfiguration)'
          inputs:
            command: 'build'
            arguments: '--no-restore --configuration $(buildConfiguration)'
            projects: '**/*.csproj'
    
        - task: DotNetCoreCLI@2
          displayName: 'Publish the project - $(buildConfiguration)'
          inputs:
            command: 'publish'
            projects: '**/*.csproj'
            publishWebProjects: false
            arguments: '--no-build --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/$(buildConfiguration)'
            zipAfterPublish: true
    
        - publish: '$(Build.ArtifactStagingDirectory)'
          artifact: drop
    
    - stage: 'Deploy'
      displayName: 'Deploy the web application'
      dependsOn: Build
      jobs:
      - deployment: Deploy
        pool:
          vmImage: 'ubuntu-20.04'
        environment: dev
        variables:
        - group: Release
        strategy:
          runOnce:
            deploy:
              steps:
              - download: current
                artifact: drop
              - task: AzureWebApp@1
                displayName: 'Azure App Service Deploy: website'
                inputs:
                  azureSubscription: 'Resource Manager - Tailspin - Space Game'
                  appName: '$(WebAppName)'
                  package: '$(Pipeline.Workspace)/drop/$(buildConfiguration)/*.zip'
    

    Let op de gemarkeerde sectie en hoe we de download en AzureWebApp@1 taken gebruiken. De pijplijn haalt de $(WebAppName) op uit de variabelegroep die we eerder hebben gemaakt.

    U ziet ook hoe we environment gebruiken om te implementeren in de dev-omgeving.

  2. Voeg vanuit de geïntegreerde terminal azure-pipelines.yml toe aan de index. Voer vervolgens de wijziging door en push deze naar GitHub.

    git add azure-pipelines.yml
    git commit -m "Add a deployment stage"
    git push origin release-pipeline
    
  3. Navigeer in Azure Pipelines naar uw pijplijn om de logboeken weer te geven.

  4. Nadat de build is voltooid, selecteert u de knop Terug om terug te keren naar de overzichtspagina en de status van uw fasen te controleren. Beide fasen zijn voltooid in ons geval.

    Een schermopname van Azure Pipelines met de voltooide fasen voor bouwen en implementeren.

De geïmplementeerde website weergeven in App Service

  1. Als het tabblad App Service nog steeds is geopend, vernieuwt u de pagina. Ga anders naar uw Azure App Service in Azure Portal en selecteer de URL van het exemplaar: bijvoorbeeld https://tailspin-space-game-web-1234.azurewebsites.net

    schermopname met implementatiedetails.

  2. De Space Game-website is geïmplementeerd in Azure App Service.

    Schermopname van de webbrowser met de Website van Space Game.

Gefeliciteerd! U hebt de Space Game-website geïmplementeerd in Azure App Service met behulp van Azure Pipelines.