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

Concluído

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

  • Crie uma instância do Serviço de Aplicativo para hospedar seu aplicativo Web.
  • Crie um pipeline de vários estágios.
  • Implante no Serviço de Aplicativo do Azure.

Criar a instância do Serviço de Aplicativo

  1. Inicie sessão no portal do Azure.

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

  3. Selecione Criar>aplicativo Web para criar um novo aplicativo Web.

  4. Na guia Noções básicas, insira os seguintes valores.

    Definição Value
    Detalhes do Projeto
    Subscrição a sua subscrição
    Grupo de Recursos Selecione Criar novo e, em seguida, insira tailspin-space-game-rg e selecione OK.
    Detalhes da instância
    Nome Forneça um nome exclusivo, como tailspin-space-game-web-1234. Este nome tem de ser exclusivo em todo o Azure. Torna-se parte do nome de domínio. Na prática, escolha um nome que descreva o seu serviço. Anote o nome para mais tarde.
    Publicar Código
    Pilha de runtime .NET 6 (LTS)
    Sistema operativo Linux
    País/Região Selecione uma região, de preferência uma perto de si.
    Planos de preços
    Plano do Linux Aceite o padrão.
    Plano de preços Selecione o nível de preço B1 básico no menu suspenso.
  5. Selecione Rever + criar, reveja o formulário e, em seguida, selecione Criar. A implantação leva alguns minutos para ser concluída.

  6. Quando a implantação estiver concluída, selecione Ir para recurso. O App Service 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 seu Serviço de Aplicativo.

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

Importante

A página Limpar seu ambiente de DevOps do Azure neste módulo explica como derrubar sua instância do Serviço de Aplicativo depois de terminá-la. A limpeza ajuda a garantir que você não seja cobrado pelos recursos do Azure depois de concluir este módulo. Certifique-se de seguir as etapas de limpeza, mesmo que não conclua este módulo.

Criar uma conexão de serviço

Importante

Certifique-se de que tem sessão iniciada no Azure e no Azure DevOps na mesma conta Microsoft.

  1. No Azure DevOps, vá para o seu projeto Space Game - Web - Release .

  2. No canto inferior esquerdo da página, selecione Configurações do projeto.

  3. Em Pipelines, selecione Ligações do serviço.

  4. Selecione Nova conexão de serviço e, em seguida, selecione Azure Resource Manager e selecione Avançar.

  5. Selecione Entidade de serviço (automática) e, em seguida, selecione Seguinte.

  6. Preencha os campos obrigatórios da seguinte forma: Se solicitado, inicie sessão na sua conta Microsoft.

    Campo Value
    Nível de âmbito Subscrição
    Subscrição a subscrição do Azure
    Grupo de Recursos tailspin-espaço-jogo-rg
    Nome da conexão de serviço Gestor de Recursos - Tailspin - Jogo Espacial
  7. Verifique se a opção Conceder permissão de acesso a todos os pipelines está selecionada.

  8. Selecione Guardar.

Adicione o estágio Build ao seu pipeline

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

Para converter sua configuração de compilação existente em um pipeline de vários estágios, adicione uma stages seção à sua configuração e, em seguida, adicione uma ou mais stage seções para cada fase do pipeline. Os estágios se dividem em trabalhos, que são uma série de etapas que são executadas sequencialmente como uma unidade.

  1. A partir do seu projeto no Visual Studio Code, abra azure-pipelines.yml e substitua seu 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. A partir do terminal integrado, execute os seguintes comandos para preparar, confirmar e, em seguida, enviar as alterações para a ramificação remota.

    git add azure-pipelines.yml
    git commit -m "Add a build stage"
    git push origin release-pipeline
    
  3. No Azure Pipelines, navegue até o pipeline para exibir os logs.

  4. Após a conclusão da compilação, selecione o botão Voltar para retornar à página de resumo e verificar 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 seu ambiente de implantação. Os ambientes podem ser usados para definir critérios específicos para sua versão, como qual pipeline está autorizado a implantar no ambiente. Os ambientes também podem ser usados para configurar aprovações manuais para usuários/grupos específicos a serem aprovados antes que a implantação seja retomada.

  1. Em Azure Pipelines, selecione Environments.

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

  2. Selecione Criar ambiente.

  3. Em Nome, insira dev.

  4. Deixe os campos restantes em seus valores padrão.

  5. Selecione Criar.

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

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

Embora você possa codificar esse nome em sua configuração de pipeline, defini-lo como uma variável torna sua configuração mais reutilizável.

  1. No Azure DevOps, selecione Pipelines e, em seguida, selecione Biblioteca.

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

  2. Selecione + Grupo de variáveis para criar um novo grupo de variáveis.

  3. Insira Release para o nome do grupo de variáveis.

  4. Selecione Adicionar em Variáveis para adicionar uma nova variável.

  5. Digite 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 Guardar.

Adicionar o estágio de implantação ao seu pipeline

Estendemos nosso pipeline adicionando um estágio de implantação para implantar o Jogo Espacial no Serviço de Aplicativo usando as tarefas e AzureWebApp@1 para baixar o artefato de compilação e, em seguida, download implantá-lo.

  1. No Visual Studio Code, substitua o conteúdo do 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 destacada e como estamos usando as download tarefas e AzureWebApp@1 . O pipeline busca o $(WebAppName) do grupo de variáveis que criamos anteriormente.

    Observe também como estamos usando environment para implantar no ambiente de desenvolvimento .

  2. A partir do terminal integrado, adicione azure-pipelines.yml ao índice. Em seguida, confirme a alteração e envie-a para o GitHub.

    git add azure-pipelines.yml
    git commit -m "Add a deployment stage"
    git push origin release-pipeline
    
  3. No Azure Pipelines, navegue até o pipeline para exibir os logs.

  4. Após a conclusão da compilação, selecione o botão Voltar para retornar à página de resumo e verificar o status de seus estágios. Ambas as etapas terminaram com sucesso no nosso caso.

    Uma captura de tela do Azure Pipelines mostrando os estágios de Build e Deploy 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 de implantação.

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

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

Parabéns! Você implantou com êxito o site do Jogo Espacial no Serviço de Aplicativo do Azure usando o Azure Pipelines.