Configurar aplicativos e máquinas virtuais

Concluído

É comum criar aplicativos e outros códigos personalizados para sua solução do Azure. Aplicativos personalizados podem incluir sites, APIs e aplicativos em segundo plano que são executados sem nenhuma interação humana. Nesta unidade, você aprenderá a projetar um pipeline para criar e implantar um aplicativo junto com sua infraestrutura.

Criar aplicativos

Muitos tipos de aplicativos precisam ser compilados ou criados para serem usados. O processo de build usa o código-fonte para o aplicativo, executa uma sequência de atividades nele e cria um conjunto de arquivos implantáveis.

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

  • Compactação dos arquivos de imagem que são servidos aos usuários do seu site.
  • Linting do 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 build é um artefato implantável. Normalmente, o artefato é salvo no sistema de arquivos do agente de pipeline. As fases posteriores de seu pipeline precisam trabalhar com o artefato para implantá-lo em seus ambientes e testá-lo à medida que ele progride por meio de retransmissores de qualidade que você define em sua definição de pipeline.

Observação

Talvez você já tenha ouvido falar dos termos integração contínua e implantação contínua ou CI e CD. Um processo de build está dentro da parte de integração contínua do pipeline.

Artefatos de pipeline

Os artefatos gerados em seu pipeline não são armazenados no repositório Git. Eles são derivados do código-fonte, mas não são o próprio código, portanto, 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 agente é criado para cada trabalho do pipeline. Portanto, você precisa de uma forma de compartilhar os arquivos entre trabalhos e agentes.

Os artefatos de pipeline possibilitam armazenar arquivos no Azure Pipelines e estão associados à determinada execução do pipeline. Use a tarefa de pipeline integrado para instruir o Azure Pipelines publicar um arquivo ou pasta do sistema de arquivos do agente PublishBuildArtifacts 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 propriedade pathToPublish é o local que contém seu código compilado ou arquivos de saída no sistema de arquivos do agente de pipeline. O conteúdo neste local é publicado no artefato. Você pode especificar um só arquivo ou uma pasta.

Cada artefato tem um nome, que você especifica usando a propriedade de tarefa artifactName. Use o nome do artefato para fazer referência a ele posteriormente no pipeline. Os trabalhos e as fases do pipeline subsequentes podem baixar o artefato para que possam trabalhar com ele, 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 tarefa DownloadBuildArtifacts 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 build de um aplicativo gera e publica um artefato implantável. Fases posteriores do pipeline implantam o artefato. A maneira como você implanta um aplicativo depende do serviço usado para hospedá-lo.

Implantar no Serviço de Aplicativo do Azure

Sua empresa de brinquedo 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 chegar a hora de implantar o aplicativo, você terá várias opções para obter 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 tarefa AzureRmWebAppDeployment do 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 do Serviço de Aplicativo, que você especifica usando as entradas ResourceGroupName e WebAppName. Como você aprendeu na unidade anterior, deve adicionar uma saída ao arquivo Bicep e usar uma variável de pipeline para propagar o nome do aplicativo pelo seu pipeline. Você também precisa especificar um arquivo .zip com o aplicativo a ser implantado usando a entrada Package, que geralmente é o caminho para um artefato de pipeline.

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

Diagram that shows the credential exchange process.

A tarefa AzureRmWebAppDeployment usa a entidade de serviço associada à conexão de serviço para criar e baixar automaticamente as credenciais necessárias para implantação. Em seguida, ela 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 você a implantar novas versões de seus aplicativos com segurança sem tempo de inatividade. Eles também ajudarão você a preparar e a abrir a nova versão do aplicativo antes de enviar o tráfego de produção para ele. Não usamos slots neste módulo, mas fornecemos um link para obter mais informações sobre eles na página Resumo no final do módulo.

Implantar aplicativos em outros serviços do Azure

O Azure oferece muitas outras opções para hospedar seus aplicativos, cada uma delas com a própria abordagem de 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 de máquina virtual para instalar seu aplicativo. Geralmente, 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 AKS (Serviço de Kubernetes do Azure), usará uma abordagem um pouco diferente para criar e implantar sua solução. Depois que o aplicativo é criado, seu pipeline cria uma imagem de contêiner e a publica em um registro de contêiner, do qual o cluster do Kubernetes a lê. Como o registro de contêiner mantém o aplicativo compilado, você geralmente não usa um artefato de pipeline.

Neste módulo, vamos nos concentrar 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 como implantar 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 de seu pipeline. Quando você implanta um aplicativo, é uma boa prática para o pipeline executar alguns testes que invoquem o código do aplicativo. Esses testes reduzem o risco de que um erro de aplicativo ou de 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 serviços de rede estejam acessíveis pelo ambiente de aplicativo. A resposta que o site retorna indica se o aplicativo está íntegro. Os desenvolvedores podem escrever e personalizar verificações de integridade próprias para atender aos requisitos do aplicativo. Quando o aplicativo tem um ponto de extremidade de verificação de integridade, geralmente faz sentido monitorar o seu pipeline após a conclusão da fase de implantação.

Seu pipeline de implantação

No próximo exercício, você atualizará o 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.