Existem algumas orientações que você pode seguir com isso. Isso dependerá da infraestrutura que você possui e do software pelo qual você está disposto a pagar e / ou implantar.
Qual é o propósito de ter tantas máquinas de compilação separadas? É para manter projetos de código isolados uns dos outros, ou para maximizar a velocidade de compilação com recursos adicionais? Ou as máquinas de construção são realmente as estações de trabalho do cliente em sua rede, que são usadas para outros propósitos além de construir?
Se é para manter os ambientes de construção isolados, a virtualização é um bom caminho a seguir. Você poderá elevar suas 20 máquinas de construção como VMs individuais sem o incômodo extra de comprar / configurar hardware para cada uma delas.
Por outro lado, se for para dimensionamento de desempenho, agrupar as máquinas de compilação nas VMs não faz tanto sentido, já que as VMs em um host disputam a disponibilidade de CPU, RAM e disco desse host. É melhor adicionar a quantidade máxima de núcleos de CPU, Gbs RAM e fusos de disco, conforme necessário, adicionando unidades de hardware adicionais.
Quanto ao requisito de atualização de pacotes de software em todas as máquinas: - Para o gerenciamento unificado de software em várias máquinas Windows sem exigir uma nova implantação do sistema operacional, confira o System Center Config Manager da Microsoft e o System Center Essentials. Eles parecem adequados às suas necessidades: link - Para a implantação de todo o sistema, onde você faria uma alteração em uma 'imagem' do sistema e, em seguida, reimplantaria essa imagem em suas máquinas de compilação, você pode fazer isso com VMs usando recursos incorporados no produto de virtualização que estiver usando. 'Modelos' no ESX ou no Hyper-V. Como alternativa, você poderia examinar uma solução de compilação do PXE-boot, como os serviços de Implantação do Windows.
Qualquer que seja a maneira como você for com isso, seu maior ponto problemático provavelmente será o uso misto de Windows e MacOS para suas máquinas de construção. Um sistema operacional padrão em todos eles é praticamente um pré-requisito para poder atualizá-los de maneira unificada.