Você, antigo administrador do TFS, já estava acostumado com a arquitetura de Controladores e Agentes que acompanha o produto desde… alguns anos!

A arquitetura antiga atendia bem a possibilidade de modularização das máquinas de build, um controlador ou vários por TPC, alguns agentes por controlador, em uma mesma máquina ou extremamente pulverizada, veja abaixo:

TFS Build Architecture

A figura mostra uma arquitetura bem maleável. E com ela é possível construir build machines específicas para um sistema, ou para uma tecnologia, ou executar builds por versões de framework. Uma limitação grande: as build machines se ligavam somente a uma TPC. Portanto empresas que optassem por segmentar o seu TFS no nível de Collections teriam que replicar a infraestrutura de build, com toda a configuração de máquina, instalação de componentes, etc…

Outra limitação, o TFS apesar de poder ser usado para desenvolvimento com outras linguagens, que não as da plataforma .Net, por exemplo Java, ou mesmo Ruby; não tinha agentes para outras plataformas como Linux ou Mac. Mesmo assim ainda era possível acionar remotamente builds em Maven rodando no Linux por exemplo… mas Mac já ficava um pouco mais complicado…

build vNext

A estratégia de Cloud da Microsoft e a aproximação com o Software Livre forçou o TFS a expandir horizontes. Como seria possível fazer o build de uma app iOS ou mesmo de um software em ASP.Net 5 (saiba mais aqui), compilando os binários para a plataforma Linux com uma arquitetura presa ao Windows?
Então muita coisa mudou, inclusive toda essa arquitetura teve que mudar! Saíram os Controllers de cena e entraram Pools e Queues. E para entender melhor esta nova arquitetura, continue lendo este post…

Esta é a nova arquitetura de build da Microsoft para o TFS e VSTS, conhecida também como build vNext:

build vNext Architecture

Pools

Ligados diretamente as Queues, os Pools resolvem o primeiro problema da arquitetura antiga, eles podem conter máquinas, builds machines, que tenham agentes conectados a outros Pools. Eles são definidos nos maiores níveis de administração do TFS/VSTS, application tier level e account level, respectivamente. Podem ter diferentes administrados cada um.

Queues

As Queues são ligadas diretamente as Team Project Collections, ou TPC, e conectam-se na outra ponta a somente um Pool. Uma build definition também está ligada diretamente a uma Queue e somente a uma. Elas são definidas no nível da Collection.

Agents

Os Agents continuam existindo, e funcionam conectados a somente um Pool. São basicamente um serviço Windows… ou agora disponível para outras plataformas! Abaixo é mostrado a imagem de instalação e configuração de um agent no Windows:

build vNext agent installation

Cada vez mais as ferramentas de administração da Microsoft estão no console! Prepare-se para mudar seu mindset. E espere para saber mais sobre a build definition do build vNext em Powershell! Mas isso fica para outro post!

Emmanuel Brandão