Release Management Web: agent based deployment

Recentemente, Vijay Machiraju, o Product Manager do Visual Studio Release Management, publicou um post falando das novidades que irão aparecer no Release Management Web no segundo semestre.

Dentre essas novidades, em destaque está o suporte a deployments baseado em agentes. Apenas para entendermos, temos duas possíveis estratégias de deployment:

Release Management Web: agent based deployment

Pull Based ou deployment “puxado”: deployment no qual o agente é instalado nas máquinas de destino e, baixa e executa as instruções de deployment na mesma. Também chamado de deployment baseado em agentes (agent based);

Push Based ou deployment “empurrado”: deployment no qual o agente baixa as instruções de deployment e as executa remotamente em máquinas, serviços ou APIs de destino.

Cada estratégia possui um cenário mais adequado ao seu emprego.
Quando se trata de servidores de destino, o modelo “puxado” pode ser mais simples, pois apesar de exigir que se instale um agente em cada servidor, não é preciso realizar nenhuma configuração extra (de protocolo por exemplo). Ele utiliza a própria comunicação do agente com o TFS (ou VSTS) para puxar os artefatos de deployment, e em seguida executar as instruções. Mas, quando não se trata de um servidor, o único modelo possível é o “empurrado”.

O deploy “empurrado” foi o modelo padrão adotado pelo time do Release Management em qualquer um dos cenários descritos na documentação do mesmo.

Mas, mesmo que o suporte oficial a estratégia baseada em agentes (“puxada”) somente será disponibilizado no segundo semestre, é possível configurar deployments utilizando essa estratégia. Veja como:

  1. Instale um agente em todos os servidores de destino;
  2. No release definition, crie um ambiente para cada um desses servidores;

Release Management Web: agent based deployment 3. Nos ambientes, utilize tasks que executam instruções locais, como: Copy Files, Command Line, PowerShell.

Release Management Web: agent based deployment

Ironicamente essas tasks não estão na categoria Deploy, e sim em Utility, o que está coerente com toda documentação do Release Management, que descreve todos os deployments utilizando o modelo “empurrado”. 4. Em cada ambiente, acesse a configuração Agent queue… e, em Demands, inclua um filtro para filtrar o nome do agente instalado no servidor correspondente ao ambiente:

Release Management Web: agent based deployment

Pronto, desta maneira ao criar a release, o deployment será direcionado para o agente instalado no servidor correspondente, e o agente irá executar as instruções no próprio servidor para realizar o deployment.

Perceba que, apesar de ser possível configurar a release para executar desta maneira, isso está longe de ser a maneira ideal, por dois motivos:

  • É necessário criar um ambiente para cada servidor, o que distorce o conceito de ambiente;
  • Quando o volume de servidores para deployment for grande, ficará inviável o gerenciamento da release, pois teremos um grande volume de ambientes.

Esses foram alguns dos motivos incentivaram a melhoria ao suporte de deployments baseado em agentes. Confira o post na íntegra para saber dessas e outras melhorias.