Cvičení – zvýšení úrovně do fáze vývoje

Dokončeno

Tým má plán a je připravený začít s implementací kanálu verze. Váš projekt Azure DevOps je nastavený a vaše instance služby Aplikace Azure Service jsou připravené k příjmu artefaktů sestavení.

V tomto okamžiku si pamatujte, že kanál týmu má pouze dvě fáze. První fáze vytvoří artefakt sestavení. Druhá fáze nasadí webovou aplikaci Space Game do služby App Service. Tady budete postupovat spolu s Andym a Mara, když upravují kanál. Nasadí se do prostředí App Service, které odpovídá fázi vývoje .

Fáze vývoje se podobá fázi nasazení, kterou jste vytvořili v modulu Vytvoření kanálu verze v Azure Pipelines . Tam jste použili trigger CI ke spuštění procesu sestavení. Tady to samé uděláte.

Načtení větve z GitHubu

Tady načtete větev z GitHubu release . Větev si také můžete rezervovat nebo přepnout na tuto větev.

Tato větev slouží jako vaše větev vydané verze . Obsahuje projekt Space Game používaný v předchozích modulech. Obsahuje také konfiguraci Azure Pipelines, se kterými můžete začít.

Načtení a přepnutí do větve:

  1. V editoru Visual Studio Code otevřete integrovaný terminál.

  2. Pokud chcete načíst větev pojmenovanou release z úložiště Microsoftu a přepnout na ni, spusťte následující git příkazy.

    git fetch upstream release
    git checkout -B release upstream/release
    

    Formát těchto příkazů umožňuje získat počáteční kód z úložiště Microsoft GitHub, označovaného jako upstream. Za chvíli tuto větev nasdílíte do svého úložiště GitHub, označované jako origin.

  3. Jako volitelný krok otevřete v editoru Visual Studio Code azure-pipelines.yml. Seznamte se s počáteční konfigurací.

    Konfigurace se podobá základní konfiguraci, kterou jste vytvořili v kanálu pro vytvoření verze pomocí modulu Azure Pipelines . Sestaví pouze konfiguraci verze aplikace. Pro účely výuky tato konfigurace nespouští kontroly kvality ani zabezpečení, které jste nastavili v předchozích modulech.

    Poznámka:

    Robustnější konfigurace může určovat větve, které se účastní procesu sestavení. Pokud chcete například ověřit kvalitu kódu, můžete testy jednotek spouštět při každém nasdílení změn v libovolné větvi. Aplikaci můžete také nasadit do prostředí, které provádí podrobnější testování. Toto nasazení ale provedete jenom v případě, že máte žádost o přijetí změn, pokud máte kandidáta na vydání verze nebo při sloučení kódu do hlavního.

    Další informace najdete v tématu Implementace pracovního postupu kódu v kanálu buildu pomocí triggerů kanálů Git a GitHub a Build.

Zvýšení úrovně změn ve fázi vývoje

Tady upravíte konfiguraci kanálu tak, aby podporovala sestavení do fáze vývoje .

  1. V editoru Visual Studio Code upravte azure-pipelines.yml.

    trigger:
    - '*'
    
    variables:
      buildConfiguration: 'Release'
      releaseBranchName: '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: 'Dev'
      displayName: 'Deploy to the dev environment'
      dependsOn: Build
      condition: |
        and
        (
          succeeded(),
          eq(variables['Build.SourceBranchName'], variables['releaseBranchName'])
        )
      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: '$(WebAppNameDev)'
                  package: '$(Pipeline.Workspace)/drop/$(buildConfiguration)/*.zip'
    

    Tato konfigurace se podobá té, kterou jste vytvořili v předchozím modulu. Vy a tým vytvořili testování konceptu pro průběžné nasazování. Všimněte si ale těchto rozdílů, které jsou zvýrazněné v předchozím příkladu kódu:

    • Tato konfigurace definuje proměnné na začátku souboru. Proměnné se používají v celém kanálu. Definují, která konfigurace se má sestavit (Release). Definují také název vaší větve vydané verze (release).
    • Fáze Nasazení z testování konceptu se teď jmenuje Dev.
    • Fáze vývoje používá podmínku, která nasměruje systém ke spuštění fáze pouze tehdy, když předchozí fáze proběhne úspěšně a aktuální větev je release. Toto nastavení zajistí, že se funkce vydané verze nasadí jenom do vývojového prostředí.
    • Krok nasazení používá proměnnou WebAppNameDev k nasazení do instance služby App Service přidružené k vývojovému prostředí.

    Poznámka:

    V praxi můžete nasadit z jiné větve, například main. Můžete zahrnout logiku, která umožňuje povýšení změn do vývojové fáze z více větví, například release a main.

  2. Z integrovaného terminálu přidejte do indexu azure-pipelines.yml . Potvrďte změnu a nasdílíte ji do GitHubu.

    Tip

    Před spuštěním těchto příkazů Git uložte azure-pipelines.yml.

    git add azure-pipelines.yml
    git commit -m "Deploy to the Dev stage"
    git push origin release
    
  3. V Azure Pipelines přejděte na build. Při jeho spuštění sledujte sestavení.

  4. Až se sestavení dokončí, vraťte se na stránku souhrnu a vyberte tlačítko Zpět.

    A screenshot of Azure Pipelines showing the completed stages.

    Uvidíte, že nasazení bylo úspěšně dokončeno.

  5. Ve webovém prohlížeči přejděte na adresu URL přidruženou k instanci služby App Service pro vaše vývojové prostředí.

    Pokud máte pořád otevřenou kartu prohlížeče, aktualizujte stránku. Pokud si adresu URL nepamatujete, najděte ji na webu Azure Portal na stránce podrobností služby App Service.

    Uvidíte, že web Space Game je nasazený do služby App Service a běží.

    A screenshot of a web browser showing the Space Game web site in the Dev environment.

  6. Jako volitelný krok vyberte v Azure Pipelines prostředí. Pak vyberte vývojové prostředí.

    Azure Pipelines zaznamenává historii nasazení. V historii můžete sledovat změny prostředí zpět na potvrzení kódu a pracovní položky.

    A screenshot of Azure Pipelines showing the deployment history. The history shows one successful deployment.