Escolha um agente de build hospedado pela Microsoft ou auto-hospedado

Concluído

Nesta unidade, você aprenderá mais sobre alguns dos fatores a serem considerados ao escolher um agente de build. Você aprenderá alguns dos benefícios e limitações do uso de um agente hospedado pela Microsoft, bem como o que está envolvido na configuração do seu agente de build privado.

O que são agentes de build e pools de agentes?

Um agente de build é um sistema que executa tarefas de build. Pense nele como um servidor dedicado que executa o processo de build.

Imagine que você tem um projeto do Azure Pipelines que recebe solicitações de build muitas vezes por dia ou talvez tenha vários projetos que podem usar cada um o mesmo tipo de agente de build. Você pode organizar os agentes de build em pools de agentes para ajudar a garantir que haja um servidor pronto para processar cada solicitação de build.

Quando um build é disparado, o Azure Pipelines seleciona um agente de build disponível no pool. Se todos os agentes estiverem ocupados, o processo aguardará um se tornar disponível.

Ao usar um agente hospedado pela Microsoft, você pode especificar a imagem de VM a ser usada do pool. Este é um exemplo da configuração de build existente que usa um agente de build do Ubuntu 20.04:

pool:
  vmImage: 'ubuntu-20.04'
  demands:
  - npm

Quando você usa um agente hospedado pela Microsoft, usa vmImage para especificar qual tipo de sistema precisa. A Microsoft fornece vários tipos de imagens de VM, incluindo aquelas que executam o Windows, o macOS e várias versões do Linux.

A seção demands especifica qual software ou funcionalidades você precisa que o computador de build tenha.

Quando você usa um agente de build do seu próprio pool, também conhecido como um pool privado, você especifica o nome do seu pool. Veja um exemplo:

pool:
  name: 'MyAgentPool'
  demands:
  - npm

Quando você não precisa de uma seção demands, pode encurtar a sintaxe dessa forma:

pool: 'MyAgentPool'

Você criará um agente de build e o adicionará a um pool posteriormente nesse módulo.

Que tipo de agentes posso usar?

Ao escolher um agente de build, há dois fatores a serem considerados:

  • O sistema operacional no qual você deseja compilar
  • Se você pode usar um agente hospedado pela Microsoft ou se precisa fornecer o seu agente

O Azure Pipelines é compatível com estes sistemas operacionais:

O agente de build escolhido depende principalmente de quais ferramentas você usa para compilar seu código. Por exemplo, se você usar o Xcode para criar seus aplicativos, poderá escolher um agente do macOS. Se precisar do Visual Studio, provavelmente escolherá um agente do Windows.

A configuração de build existente usa um agente hospedado pela Microsoft. Agentes hospedados são executados na infraestrutura que a Microsoft fornece para você.

Um agente privado usa a infraestrutura que você fornecer. O agente pode ser um sistema que é executado na nuvem ou em no datacenter. O sistema funciona, contanto que o agente atenda às suas necessidades e possa se conectar ao Azure Pipelines. Neste módulo, você usará uma VM que será executada no Azure, que forneceremos.

Quando devo usar meu próprio agente de build?

Para muitas tarefas de build, um agente hospedado pela Microsoft fará tudo o que você precisa. É a maneira mais fácil para começar.

A Microsoft cuida de toda a segurança e outras atualizações do sistema operacional para você. Tudo o que você precisa fazer é definir a configuração de build que deseja executar.

Os agentes hospedados também contêm software para a criação de muitos tipos comuns de aplicativos. Você pode adicionar qualquer outro software necessário durante o processo de build.

Os agentes hospedados pela Microsoft têm algumas limitações, que incluem:

  • Duração do build: um trabalho de build pode ser executado por até seis horas.
  • Espaço em disco: agentes hospedados fornecem uma quantidade fixa de armazenamento para suas fontes e as saídas de build. Isso pode não ser armazenamento suficiente.
  • CPU, memória e rede: os agentes hospedados são executados em VMs de uso geral do Microsoft Azure. Standard_DS2_v2 descreve a CPU, a memória e as características de rede que você pode esperar.
  • Interatividade: não é possível entrar em um agente hospedado.
  • Compartilhamentos de arquivos: não é possível remover artefatos de build para compartilhamentos de arquivo UNC (Convenção de Nomenclatura Universal).

Embora os agentes hospedados sejam relativamente fáceis de configurar, há alguns benefícios em usar seus próprios agentes de build, além das limitações que acabamos de descrever.

Por exemplo, ao usar agentes hospedados, você está compartilhando a infraestrutura com outros usuários do Azure DevOps. Embora normalmente leve apenas segundos para iniciar o build, pode levar mais tempo, dependendo da carga no sistema da Microsoft.

Além disso, ao usar agentes hospedados, você obtém um sistema limpo com cada build. Quando você traz o próprio agente de build, pode decidir executar um build limpo cada vez ou um build incremental. Com um build incremental, você compila com base em um código compilado e ferramentas de build existentes. Um build incremental pode levar menos tempo para ser concluído porque o sistema já tem muitas das ferramentas de build e componentes dependentes instalados.

Como uma compensação, como a infraestrutura de build é sua, é sua responsabilidade assegurar que seus agentes de build contenham os patches de segurança e software mais recentes.

Como configuro um agente de build privado?

Um agente de build privado contém o software necessário para compilar os seus aplicativos. Ele também contém o software do agente que permite que o sistema se conecte ao Azure Pipelines e receba trabalhos de build.

Neste módulo, você usará uma VM executada no Azure, que fornecemos. Isso proporciona flexibilidade em como abrir e manter seus agentes.

Por exemplo, você pode:

  • Configurar o agente de build manualmente: você abre o sistema, entra e interativamente instala suas ferramentas de build e o software do agente.

  • Automatizar o processo: você abre o sistema e executa um script ou ferramenta para instalar suas ferramentas de build e o software do agente. Você pode configurar o agente depois que o sistema ficar online ou durante o processo de provisionamento.

    Por exemplo, ao executar os agentes de build no Azure, você pode usar um modelo do ARM (modelo do Azure Resource Manager) ou o Bicep para abrir o sistema e configurá-lo para que ele funcione como um agente de build, tudo isso em uma só etapa. Terraform da HashiCorp é outra maneira de automatizar o processo. O Terraform funciona com vários tipos de infraestrutura, incluindo o Azure.

  • Criar uma imagem: Você cria uma imagem, ou instantâneo, de um ambiente configurado. Em seguida, você usa a imagem para criar quantos sistemas idênticos precisar no seu pool.

A configuração manual é uma boa maneira de começar porque ela permite que você a entenda o processo. Também é a maneira mais rápida de configurar quando você precisa de apenas um agente de build.

A automação é útil quando você precisa de muitos agentes de build ou precisa criar e desmontar a infraestrutura de build com regularidade. Você pode mudar de um processo manual para um automatizado quando precisa de vários agentes.

As imagens são uma forma de automação. Elas podem ajudar a economizar tempo, pois todo o software está pré-configurado. Como uma compensação, talvez você precise recompilar periodicamente as imagens para incorporar os patches mais recentes do sistema operacional e ferramentas de build. Packer da HashiCorp é uma ferramenta popular para a criação de imagens.

Para seu cenário de jogo espacial, você decide usar um agente de build privado.

Verificar seu conhecimento

1.

Digamos que você esteja compilando um jogo de videogame. O processo de build leva duas horas para ser executado e usa de 18 GB a 20 GB de espaço em disco para compilar os ativos do jogo. Que tipo de agente de build você deve usar?

2.

Digamos que você esteja compilando um aplicativo executado no macOS, no Linux e no Windows. Como você pode compilá-lo para cada plataforma de destino?

3.

Um agente de build auto-hospedado: