Configurar aplicativos e máquinas virtuais

Concluído

É comum criar aplicativos e outros códigos personalizados para sua solução do Azure. As aplicações personalizadas podem incluir Web sites, APIs e aplicações em segundo plano que são executadas sem qualquer interação humana. Nesta unidade, você aprende a projetar um pipeline para criar e implantar um aplicativo junto com sua infraestrutura.

Compilar aplicações

Muitos tipos de aplicativos precisam ser compilados ou criados antes de poderem ser usados. O processo de compilação pega o código-fonte do aplicativo, executa uma sequência de atividades nele e, em seguida, cria um conjunto de arquivos implantáveis.

O processo de compilação compila o código-fonte em arquivos binários ou executáveis, mas normalmente inclui outras atividades também:

  • Comprimir os ficheiros de imagem que são servidos aos utilizadores do seu website.
  • Linting seu código para verificar se ele segue boas práticas de codificação.
  • Execução de testes de unidade que verificam o comportamento de partes individuais do seu aplicativo.

Além dessas etapas, você também pode executar etapas como assinar digitalmente os arquivos para ajudar a garantir que eles não possam ser modificados.

Seja qual for a série de etapas, a saída do processo de compilação é um artefato implantável. Normalmente, o artefato é salvo no sistema de arquivos do agente de pipeline. Os estágios posteriores do pipeline precisam trabalhar com o artefato para implantá-lo em seus ambientes e testá-lo à medida que ele progride pelas portas de qualidade definidas na definição do pipeline.

Nota

Você já deve ter ouvido falar dos termos integração contínua e implantação contínua, ou CI e CD. Um processo de construção fica dentro da parte de integração contínua do seu pipeline.

Artefatos de pipeline

Os artefatos gerados no pipeline não são armazenados no repositório Git. Eles são derivados do código-fonte, mas não são códigos em si, e por isso não pertencem a um repositório de controle do código-fonte. Eles são criados no sistema de arquivos do agente de pipeline. Um novo agente é criado para cada trabalho de pipeline, portanto, você precisa de uma maneira de compartilhar os arquivos entre trabalhos e agentes.

Os artefatos de pipeline fornecem uma maneira de armazenar arquivos no Azure Pipelines e estão associados à execução específica do seu pipeline. Use a PublishBuildArtifacts tarefa de pipeline interna para instruir o Azure Pipelines a publicar um arquivo ou pasta do sistema de arquivos do agente como um artefato de pipeline:

- task: PublishBuildArtifacts@1
  displayName: Publish folder as a pipeline artifact
  inputs:
    artifactName: my-artifact-name
    pathToPublish: '$(Build.ArtifactStagingDirectory)/my-folder'

A pathToPublish propriedade é o local que contém o código compilado ou os arquivos de saída no sistema de arquivos do agente de pipeline. O conteúdo neste local é publicado no artefato. Você pode especificar um único arquivo ou uma pasta.

Cada artefato tem um nome, que você especifica usando a artifactName propriedade task. Use o nome do artefato para se referir a ele posteriormente no pipeline. Os trabalhos e estágios de pipeline subsequentes podem baixar o artefato para que possam trabalhar com ele para, por exemplo, implantar o site no servidor que o hospeda:

Diagram that shows pipeline stages to build and deploy that refer to an artifact named Website.

Quando você usa trabalhos de implantação, os artefatos de pipeline são baixados automaticamente por padrão. Se você usar trabalhos regulares, use a DownloadBuildArtifacts tarefa para baixar um artefato de pipeline:

- task: DownloadBuildArtifacts@0
  inputs:
    buildType: current
    downloadType: single
    artifactName: my-artifact-name
    downloadPath: '$(System.ArtifactsDirectory)'

Implantar aplicativos

O processo de compilação de um aplicativo gera e publica um artefato implantável. Estágios posteriores do pipeline implantam o artefato. A maneira como você implanta um aplicativo depende do serviço que você usa para hospedá-lo.

Implementar no Serviço de Aplicações do Azure

Sua empresa de brinquedos usa o Serviço de Aplicativo do Azure para hospedar seu site. Você pode criar e configurar um aplicativo do Serviço de Aplicativo usando o Bicep. Mas quando chega a hora de implantar o aplicativo, você tem várias opções para colocar o aplicativo compilado na infraestrutura de hospedagem. Essas opções são gerenciadas como parte do plano de dados do Serviço de Aplicativo.

A abordagem mais comum é usar a AzureRmWebAppDeployment tarefa Azure Pipelines:

- task: AzureRmWebAppDeployment@4
  inputs:
    azureSubscription: MyServiceConnection
    ResourceGroupName: MyResourceGroup
    WebAppName: my-app-service
    Package: '$(Pipeline.Workspace)/my-artifact-name/website.zip'

Você precisa fornecer várias informações para implantar seu aplicativo no Serviço de Aplicativo. Essas informações incluem o grupo de recursos e o nome do recurso do aplicativo Serviço de Aplicativo, que você especifica usando as ResourceGroupName entradas e WebAppName . Como você aprendeu na unidade anterior, você deve adicionar uma saída ao seu arquivo Bicep e usar uma variável de pipeline para propagar o nome do aplicativo através do seu pipeline. Você também precisa especificar um arquivo de .zip com o aplicativo a ser implantado usando a Package entrada, que geralmente é o caminho para um artefato de pipeline.

O Serviço de Aplicativo tem seu próprio sistema de autenticação de plano de dados que usa para implantações. A AzureRmWebAppDeployment tarefa lida com o processo de autenticação automaticamente para você:

Diagram that shows the credential exchange process.

A AzureRmWebAppDeployment tarefa usa a entidade de serviço associada à sua conexão de serviço para criar e baixar automaticamente as credenciais necessárias para a implantação . Em seguida, ele usa as credenciais de implantação quando se comunica com a API do plano de dados do Serviço de Aplicativo.

O Serviço de Aplicativo também fornece alguns outros recursos relacionados à implantação, incluindo slots de implantação. Os slots ajudam-no a implementar com segurança novas versões das suas aplicações sem tempo de inatividade. Eles também ajudam a preparar e aquecer a nova versão do seu aplicativo antes de enviar tráfego de produção para ele. Não usamos slots neste módulo, mas fornecemos um link para mais informações sobre eles na página Resumo no final do módulo.

Implantar aplicativos em outros serviços do Azure

O Azure fornece muitas outras opções para hospedar seus aplicativos, cada uma com sua própria abordagem para implantação.

O Azure Functions é criado no Serviço de Aplicativo e usa um processo de implantação semelhante ao descrito anteriormente.

Se você implantar em uma máquina virtual, normalmente precisará se conectar à instância da máquina virtual para instalar seu aplicativo. Muitas vezes, você precisa usar ferramentas especializadas, como Chef, Puppet ou Ansible, para orquestrar uma implantação em máquinas virtuais.

Se você usar o Kubernetes ou o Serviço Kubernetes do Azure (AKS), usará uma abordagem ligeiramente diferente para criar e implantar sua solução. Depois que seu aplicativo é criado, seu pipeline cria uma imagem de contêiner e a publica em um registro de contêiner, do qual seu cluster Kubernetes lê. Como seu registro de contêiner mantém o aplicativo compilado, você geralmente não usa um artefato de pipeline.

Neste módulo, nos concentramos no Serviço de Aplicativo do Azure para ilustrar os conceitos de pipeline envolvidos. Na página Resumo no final do módulo, fornecemos links para mais informações sobre a implantação em outros serviços de hospedagem.

Testar aplicativos em seu pipeline

Em um módulo anterior, você aprendeu sobre o valor e a importância de executar testes automatizados a partir do seu pipeline. Quando você implanta um aplicativo, é uma boa prática para o pipeline executar alguns testes que invocam o código do aplicativo. Esses testes reduzem o risco de que um erro de aplicativo ou implantação possa causar tempo de inatividade. Em cenários mais avançados, você pode até mesmo executar um conjunto de casos de teste em seu aplicativo, como invocar APIs ou enviar e monitorar uma transação sintética.

Muitos aplicativos implementam pontos de extremidade de verificação de integridade. Quando um ponto de extremidade de verificação de integridade recebe uma solicitação, ele executa uma série de verificações no site, como garantir que os bancos de dados e os serviços de rede estejam acessíveis a partir do ambiente do aplicativo. A resposta que o site retorna indica se o aplicativo está íntegro. Os desenvolvedores podem escrever e personalizar suas próprias verificações de integridade para atender aos requisitos do aplicativo. Se seu aplicativo tiver um ponto de extremidade de verificação de integridade, geralmente faz sentido monitorá-lo a partir do pipeline após a conclusão do estágio de implantação.

Seu pipeline de implantação

No próximo exercício, você atualiza seu pipeline de implantação para adicionar novos trabalhos para criar o aplicativo do seu site e implantá-lo em cada ambiente:

Diagram that shows the revised pipeline, including a new build stage and an application deployment step.