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ê aprenderá como projetar um fluxo de trabalho 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 usa o código-fonte do aplicativo, executa uma sequência de atividades nele e cria um conjunto de arquivos implantáveis.

O processo de compilação compila o código-fonte em arquivos binários ou executáveis. Um processo de compilação normalmente inclui outras atividades, incluindo compactar os arquivos de imagem que serão servidos aos usuários do seu site, alinhar seu código para verificar se ele segue boas práticas de codificação e executar testes de unidade que verificam o comportamento de partes individuais do seu aplicativo. 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 executor do fluxo de trabalho. Partes posteriores do fluxo de trabalho 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 fluxo de trabalho.

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 compilação fica dentro da parte de integração contínua do seu fluxo de trabalho.

Artefatos de fluxo de trabalho

Os artefatos gerados em seu fluxo de trabalho não são armazenados em seu 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 executor do fluxo de trabalho. Um novo corredor é criado para cada trabalho de fluxo de trabalho, portanto, você precisa de uma maneira de compartilhar os arquivos entre trabalhos e corredores.

Os artefatos de fluxo de trabalho fornecem uma maneira de armazenar arquivos nas Ações do GitHub e estão associados à execução específica do seu fluxo de trabalho. Use a ação do fluxo de trabalho para instruir as Ações do GitHub a actions/upload-artifact carregar um arquivo ou pasta do sistema de arquivos do executor como um artefato de fluxo de trabalho:

- name: Upload folder as a workflow artifact
  uses: actions/upload-artifact@v3
  with:
    name: my-artifact-name
    path: ./my-folder

A path propriedade é o local que contém o código compilado ou os arquivos de saída no sistema de arquivos do executor de trabalho. O conteúdo neste local será carregado para o artefato. Você pode especificar um único arquivo, vários arquivos ou uma pasta.

Cada artefato tem um nome, que você especifica usando a name propriedade. Use o nome do artefato para se referir a ele posteriormente no fluxo de trabalho. Os trabalhos de fluxo de trabalho subsequentes podem baixar o artefato para que possam trabalhar com ele para, por exemplo, implantar o site no servidor que o hospeda:

Diagram showing a workflow uploading and then referring to an artifact named 'Website'.

Use a actions/download-artifact ação para baixar todos os artefatos do fluxo de trabalho:

- uses: actions/download-artifact@v3

Ou especifique um nome de artefato para baixar apenas um artefato específico:

- uses: actions/download-artifact@v3
  with:
    name: my-artifact-name

Implantar aplicativos

O processo de compilação de um aplicativo gera e carrega um artefato implantável. Trabalhos posteriores no fluxo de trabalho 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 consiste em utilizar a azure/webapps-deploy ação:

- uses: azure/webapps-deploy@v2
  with:
    app-name: my-app-service
    package: 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 nome do recurso do aplicativo do Serviço de Aplicativo, que você especifica usando a app-name propriedade. Como você aprendeu na unidade anterior, você deve adicionar uma saída ao seu arquivo Bicep e usar uma variável de fluxo de trabalho para propagar o nome do aplicativo através do seu fluxo de trabalho. Você também precisa especificar um arquivo .zip com o aplicativo a ser implantado usando a package propriedade. Esse geralmente é o caminho para um artefato de fluxo de trabalho.

O Serviço de Aplicativo tem seu próprio sistema de autenticação de plano de dados que usa para implantações. A azure/webapps-deploy ação lida com o processo de autenticação automaticamente para você:

Diagram illustrating the credential exchange process.

A azure/webapps-deploy ação usa a identidade associada à sessão ativa do Azure do seu trabalho, na qual você entrou usando uma identidade de carga de trabalho. A ação cria e baixa 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), normalmente usaria uma abordagem ligeiramente diferente para criar e implantar sua solução. Depois que seu aplicativo é criado, seu fluxo de trabalho cria uma imagem de contêiner e a publica em um registro de contêiner, do qual o cluster do Kubernetes lê. Como seu registro de contêiner mantém o aplicativo compilado, você geralmente não usa um artefato de fluxo de trabalho.

Neste módulo, nos concentramos no Serviço de Aplicativo do Azure para ilustrar os conceitos de fluxo de trabalho 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 aplicações no seu fluxo de trabalho

Em um módulo anterior, você aprendeu sobre o valor e a importância de executar testes automatizados do seu fluxo de trabalho. Quando você implanta um aplicativo, é uma boa prática para o fluxo de trabalho 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 seu fluxo de trabalho após a conclusão do trabalho de implantação.

Seu fluxo de trabalho de implantação

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

Diagram showing the revised workflow, including a new build job and an application deployment job.