Exercício – Implantar o aplicativo Web no Serviço de Aplicativo do Azure

Concluído

Neste módulo, você criará um pipeline de vários estágios para criar e implantar seu aplicativo no Serviço de Aplicativo do Azure. Você aprenderá como:

  • Crie uma instância do Serviço de Aplicativo para hospedar o aplicativo Web.
  • Criar um pipeline de várias fases.
  • Implantar no Serviço de Aplicativo do Azure.

Cria a instância do Serviço de Aplicativo

  1. Entre no portal do Azure.

  2. Selecione Serviços de Aplicativos no painel esquerdo.

  3. Escolha Criar>Aplicativo Web para criar um aplicativo Web.

  4. Na guia Básico, insira os valores a seguir.

    Configuração Valor
    Detalhes do projeto
    Subscription sua assinatura
    Grupo de recursos Selecione Criar, digite tailspin-space-game-rg e selecione Ok.
    Detalhes da Instância
    Nome Forneça um nome exclusivo, como tailspin-space-game-web-1234. Esse nome deve ser exclusivo no Azure. Ele se torna parte do nome de domínio. Na prática, escolha um nome que descreva seu serviço. Anote o nome para usá-lo mais tarde.
    Publicação Código
    Pilha de runtime .NET 6 (LTS)
    Sistema Operacional Linux
    Região Selecione uma região, preferencialmente uma perto de você.
    Planos de preços
    Plano do Linux Aceite o padrão.
    Plano de preços Selecione o tipo de preço Básico B1 no menu suspenso.
  5. Escolha Revisar + criar, revise o formulário e selecione Criar. A implantação levará alguns instantes para ser concluída.

  6. Após a conclusão da implantação, selecione Ir para o recurso. O Serviço de Aplicativo Essentials exibe detalhes relacionados à sua implantação.

    Captura de tela mostrando detalhes da implantação, incluindo a URL de implantação.

  7. Selecione a URL para verificar o status do Serviço de Aplicativo.

    Uma captura de tela de um navegador da Web mostrando a home page padrão no Serviço de Aplicativo do Azure.

Importante

A página Limpar o ambiente do Azure DevOps neste módulo explica como subdividir sua instância do Serviço de Aplicativo depois de terminar de usá-la. A limpeza ajuda a garantir que você não seja cobrado pelos recursos do Azure depois de concluir este módulo. Siga as etapas de limpeza mesmo que não você concluir este módulo.

Criar uma conexão de serviço

Importante

Verifique se você está conectado ao Azure e ao Azure DevOps na mesma conta Microsoft.

  1. No Azure DevOps, acesse seu projeto Space Game – Web – Release.

  2. Na parte inferior esquerda da página, selecione Configurações do Projeto.

  3. Em Pipelines, selecione Conexões de serviço.

  4. Selecione New service connection, Azure Resource Manager e escolha Next.

  5. Selecione Service principal (automatic) e Next.

  6. Preencha os campos obrigatórios da seguinte maneira: se solicitado, entre na sua conta Microsoft.

    Campo Valor
    Scope level Assinatura
    Subscription Sua assinatura do Azure
    Grupo de recursos tailspin-space-game-rg
    Service connection name Resource Manager – Tailspin – Space Game
  7. Verifique se a opção Grant access permission to all pipelines está selecionada.

  8. Selecione Salvar.

Adicionar a fase Build ao pipeline

Um pipeline de várias fases permite que você defina fases distintas pelas quais sua alteração passa à medida que é promovida pelo pipeline. Cada fase define o agente, a variável e as etapas necessárias para realizar esse estágio do pipeline. Nesta seção, você definirá um estágio para executar o build. Você define uma segunda fase para implantar o aplicativo Web no Serviço de Aplicativo.

Para converter a configuração de build existente em um pipeline de várias fases, adicione uma seção stages à configuração e uma ou mais seções stage a cada fase do pipeline. As fases dividem-se em trabalhos, que são uma série de etapas executadas sequencialmente como uma unidade.

  1. No seu projeto no Visual Studio Code, abra azure-pipelines.yml e substitua o conteúdo por este código:

    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. No terminal integrado, execute os comandos a seguir para preparar as alterações, bem como para fazer commit e efetuar push delas para o branch remoto.

    git add azure-pipelines.yml
    git commit -m "Add a build stage"
    git push origin release-pipeline
    
  3. No Azure Pipelines, acesse o seu pipeline para ver os logs.

  4. Após a conclusão do build, selecione o botão Voltar para retornar à página de resumo e verifique o status do pipeline e do artefato publicado.

    Uma captura de tela do Azure Pipelines mostrando o resumo do trabalho.

Criar o ambiente de desenvolvimento

Um ambiente é uma representação abstrata do ambiente de implantação. Os ambientes podem ser usados para definir critérios específicos para a versão, como o pipeline que está autorizado a ser implantado no ambiente. Os ambientes também podem ser usados para configurar aprovações manuais para a aprovação de um usuário/um grupo específico antes que a implantação seja retomada.

  1. No Azure Pipelines, selecione Environments.

    Uma captura de tela do Azure Pipelines mostrando a localização da opção de menu Ambientes.

  2. Selecione Criar ambiente.

  3. Em Nome, insira desenvolvimento.

  4. Deixe os outros campos com suas definições padrão.

  5. Selecione Criar.

Armazenar o nome do aplicativo Web em uma variável de pipeline

A fase Implantar que estamos criando usa o nome para identificar qual instância do Serviço de Aplicativo implantar, por exemplo: tailspin-space-game-web-1234.

Embora você possa embutir esse nome na configuração do pipeline, defini-lo como uma variável torna a configuração mais reutilizável.

  1. No Azure DevOps, selecione Pipelines e Library.

    Captura de tela do Azure Pipelines mostrando o local do menu Biblioteca.

  2. Selecione + Variable group para criar um grupo de variáveis.

  3. Insira Release em variable group name.

  4. Selecione Add em Variables para adicionar uma nova variável.

  5. Insira WebAppName para o nome da variável e o nome da instância do Serviço de Aplicativo para seu valor: por exemplo, tailspin-space-game-web-1234.

  6. Selecione Salvar.

Adicionar a fase de implantação ao pipeline

Estendemos nosso pipeline adicionando uma fase de implantação para implantar o Space Game no Serviço de Aplicativo usando as tarefas download e AzureWebApp@1 para baixar o artefato de compilação e, em seguida, implantá-lo.

  1. No Visual Studio Code, substitua o conteúdo de azure-pipelines.yml pelo seguinte 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'
    

    Observe a seção realçada e como estamos usando as tarefas download e AzureWebApp@1. O pipeline busca o $(WebAppName) do grupo de variáveis que criamos anteriormente.

    Observe também como estamos usando o environment para implantação no ambiente de desenvolvimento.

  2. No terminal integrado, adicione azure-pipelines.yml ao índice. Depois, faça commit da alteração e efetue push dela para o GitHub.

    git add azure-pipelines.yml
    git commit -m "Add a deployment stage"
    git push origin release-pipeline
    
  3. No Azure Pipelines, acesse o seu pipeline para ver os logs.

  4. Após a conclusão do build, selecione o botão Voltar para retornar à página de resumo e verifique o status das fases. As duas fases foram concluídas com sucesso em nosso caso.

    Uma captura de tela do Azure Pipelines mostrando os estágios de Compilar e Implantar concluídos.

Exibir o site implantado no Serviço de Aplicativo

  1. Se você ainda tiver a guia Serviço de Aplicativo aberta, atualize a página. Caso contrário, navegue até o Serviço de Aplicativo do Azure no portal do Azure e selecione a URL da instância: por exemplo,https://tailspin-space-game-web-1234.azurewebsites.net

    Captura de tela mostrando detalhes da implantação.

  2. O site do Space Game é implantado com êxito no Serviço de Aplicativo do Azure.

    Captura de tela de um navegador da Web mostrando o site do Space Game.

Parabéns! Você implantou com êxito o site Space Game para o Serviço de Aplicativo do Azure usando o Azure Pipelines.