Escolher um agente de compilação alojado pela Microsoft ou auto-alojado

Concluído

Nesta unidade, você aprenderá sobre alguns dos fatores a serem considerados ao escolher um agente de construção. Você aprenderá sobre alguns dos benefícios e limitações de usar um agente hospedado pela Microsoft e o que está envolvido quando você configura seu próprio agente de compilação privado.

O que são agentes de compilação e conjuntos de agentes?

Um agente de compilação é um sistema que executa tarefas de compilação. Pense nele como um servidor dedicado que executa o seu processo de compilação.

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

Quando uma compilação é acionada, o Azure Pipelines seleciona um agente de compilação disponível do conjunto. Se todos os agentes estiverem ocupados, o processo aguarda que um fique disponível.

Ao utilizar um agente alojado pela Microsoft, especifique a imagem de VM a utilizar a partir do conjunto. Aqui está um exemplo de sua configuração de compilação existente que usa um agente de compilação do Ubuntu 20.04:

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

Ao utilizar um agente alojado pela Microsoft, utiliza vmImage para especificar o tipo de sistema de que precisa. A Microsoft fornece vários tipos de imagens de VM, incluindo alguns que executam Windows, macOS e várias variantes do Linux.

A secção demands especifica qual o software ou as funcionalidades necessárias para a máquina de compilação.

Quando utiliza um agente de compilação do seu próprio conjunto, também conhecido como um conjunto privado, especifica o nome do seu conjunto. Eis um exemplo:

pool:
  name: 'MyAgentPool'
  demands:
  - npm

Quando não precisar de uma secção demands, pode reduzir a sintaxe deste modo:

pool: 'MyAgentPool'

Irá criar um agente de compilação e adicioná-lo a um conjunto mais adiante neste módulo.

Que tipo de agentes posso utilizar?

Ao escolher um agente de compilação, há dois fatores a serem considerados:

  • O sistema operacional no qual você deseja construir
  • Se você pode usar um agente hospedado pela Microsoft ou se precisa fornecer seu próprio agente

O Azure Pipelines suporta os seguintes sistemas operativos:

O agente de compilação que você escolhe depende principalmente de quais ferramentas você usa para criar seu código. Por exemplo, se utilizar o Xcode para compilar as suas aplicações, pode escolher um agente do macOS. Se precisar do Visual Studio, provavelmente escolheria um agente do Windows.

A configuração da compilação existente utiliza um agente alojado pela Microsoft. Os agentes hospedados são executados na infraestrutura que a Microsoft fornece para você.

Um agente privado usa a infraestrutura que você fornece. Seu agente pode ser um sistema executado na nuvem ou em seu datacenter. Qualquer um dos sistemas funciona, desde que o agente atenda aos seus requisitos e possa se conectar ao Azure Pipelines. Neste módulo, você usará uma VM que é executada no Azure, que fornecemos.

Quando devo utilizar o meu próprio agente de compilação?

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

A Microsoft encarrega-se de toda a segurança e outras atualizações do sistema operativo. Tudo o que você precisa fazer é definir a configuração de compilação que deseja executar.

Os agentes alojados também contêm software para a compilação de muitos tipos comuns de aplicações. Pode adicionar qualquer outro software necessário durante o processo de compilação.

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

  • Duração da compilação: um trabalho de compilação pode ser executado por até seis horas.
  • Espaço em disco: os agentes hospedados fornecem uma quantidade fixa de armazenamento para suas fontes e suas saídas de compilação. Este 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, memória e características de rede que pode esperar.
  • Interatividade: não é possível entrar em um agente hospedado.
  • Compartilhamentos de arquivos: não é possível soltar artefatos de compilação em compartilhamentos de arquivos 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 compilação, deixando de lado as limitações que acabamos de descrever.

Por exemplo, quando você usa agentes hospedados, está compartilhando infraestrutura com outros usuários do Azure DevOps. Embora normalmente leve apenas alguns segundos para iniciar sua compilação, pode levar mais tempo, dependendo da carga no sistema Microsoft.

Além disso, quando você usa agentes hospedados, obtém um sistema limpo com cada compilação. Quando você traz seu próprio agente de compilação, você pode decidir se deseja executar uma compilação limpa cada vez ou executar uma compilação incremental. Com uma compilação incremental, você cria com base em ferramentas de compilação existentes e código compilado. Uma compilação incremental pode levar menos tempo para ser concluída, porque o sistema já tem muitas das ferramentas de compilação e componentes dependentes instalados.

Por outro lado, como a infraestrutura de compilação é sua, é sua responsabilidade assegurar que os agentes de compilação contêm as correções mais recentes do software e segurança.

Como posso configurar um agente de compilação privado?

Um agente de compilação privado contém o software necessário para criar seus aplicativos. Ele também contém software de agente, que permite que o sistema se conecte ao Azure Pipelines e receba trabalhos de compilação.

Ao configurar um agente privado, você fornece a infraestrutura na qual as compilações são executadas. Isto dá-lhe flexibilidade sobre como criar e manter os agentes.

Por exemplo, pode:

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

  • Automatize o processo: você abre o sistema e executa um script ou ferramenta para instalar suas ferramentas de compilação e o software do agente. Pode configurar o agente depois de o sistema ficar online ou durante o processo de aprovisionamento.

    Por exemplo, quando você executa agentes de compilação no Azure, pode usar um modelo do Azure Resource Manager (modelo ARM) ou Bicep para exibir o sistema e configurá-lo para atuar como um agente de compilação, tudo em uma única etapa. Terraform da HashiCorp é outra forma 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, utiliza a imagem para criar os sistemas idênticos necessários no seu conjunto.

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

A automação é útil quando você precisa de muitos agentes de compilação ou precisa criar e derrubar a infraestrutura de compilação regularmente. Você pode passar de um processo manual para um processo automatizado quando precisar de vários agentes.

As imagens são uma forma de automação. Eles podem ajudar a economizar tempo, porque todo o software é pré-configurado. Como compensação, talvez seja necessário reconstruir periodicamente suas imagens para incorporar os patches e ferramentas de compilação mais recentes do sistema operacional. O Packer da HashiCorp é uma ferramenta popular para a criação de imagens.

Para o seu cenário de Jogo Espacial, você decide usar um agente de compilação privado.

Verifique o seu conhecimento

1.

Digamos que você esteja construindo um videogame. O processo de compilação 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 compilação pode utilizar?

2.

Digamos que você esteja criando um aplicativo que roda em macOS, Linux e Windows. Como você pode criar o aplicativo para cada plataforma que você segmenta?

3.

Um agente de compilação auto-alojado: