Vamos ao nosso primeiro passo que é fazer nosso website compilar através de uma build definition.
Esse passo parece simples, mas pode trazer alguns problemas para o nosso ambiente de Build. Esses problemas podem ser criados por causa de dependências que o seu projeto tenha. Como estamos trabalhando com um servidor dedicado ao TeamBuild, ele precisará ter todas os componentes necessários para conseguir realizar a compilação do seu projeto.
Então para iniciar a nossa compilação, no servidor de Build, que nesse cenário que eu montei também está configurado o meu Agente de Build, será necessário instalar os componentes de terceiros que o seu projeto depende.
Como nesse exemplo eu não vou usar nada de terceiros não precisarei instalar, mas caso a aplicação de vocês necessite desses componentes instalados, vocês devem preparar esse ambiente com tudo que for necessário antes de iniciarmos a compilação.
Esse procedimento deve ser realizado em cada Agente de Build que você tiver, isso é muito importante, caso contrário o Team build não conseguirá compilar.
Como exemplo, eu criei 1 TeamProject Chamado TeamBuild e criei uma Build Definition WebSite1.
Vamos agora configurar a build definition, para esse exemplo, coloquei as seguintes configurações;
Nessa tela basta configurar o nome da sua Build Definition. O ideal é que seja um nome que faça referência ao que ela vai executar no sistema.
Como esse é apenas um exemplo eu coloquei a trigger como Manual.
Esse é um ponto muito importante e geralmente onde alguns erros de dependencia começam a ocorrer. Na aba Workspace é onde eu informo para o TeamBuild o que ele deve baixar para conseguir realizar a compilação do meu Website.
Assim que você cria a sua build definition, um dos pontos que o Visual Studio já configura para você é trazer qual pasta do Source Control será baixada e para qual diretório dentro do Agente de Build.
Um problema comum é que as vezes o Visual Studio coloca para baixar todo o seu repositório e isso acaba deixando muito lento o sistema de automação da build, pois cada vez que ele for executar uma build, ele baixará todo o seu repositório (vai baixar todos os arquivos que estão no seu source control, mesmo que sejam de outros team projects) e essa é uma tarefa um pouco demorada.
Imagina que seu repositória já tenha por volta de 1GB de arquivos mas o seu projeto só necessite de 10Mbs, toda vez o Team Build terá que realizar o download de 1GB de arquivos para utilizar os 10Mbs de arquivos que seu projeto precisa para ser compilado. Então tome cuidado configure bem quais os workspaces que você vai baixar.
Outro ponto importante é garantir que você baixe todas as pastas necessarias. Imagine a seguinte situação: Você possui um website e uma pasta de resources que contém algumas dll´s que foram adicionadas ao seu projeto de projetos externos que são necessárias para a compilação, um exemplo seria as dlls de algum framework desenvolvido na sua empresa. Essa pasta tem que ser mapeada para que seja realizado o download, caso contrário na hora de compilação irá ser gerado um erro por falta de recursos.
Para evitar esse tipo de problema, seria bom mandar baixar o repositório todo do seu Team Project, assim você terá uma garantia que tudo que está relacionado ao seu projeto será baixado para a compilação.
Para as telas de Build Defaults, Process e Retention Policy, nesse momento ficarão com as informações padrões. Iremos mexer na parte de Process mais tarde.
Agora vamos executar a nossa build e ver se a compilação vai funcionar.
Para isso basta enfileirar uma build, já que configuramos como trigger o modelo Manual e ver o resultado da Build.
E o resultado esperado tem que ser a compilação realizada como mostrado na seguinte tela:
Caso tenha dado algum erro de compilação, faça os ajustes necessários para podermos ir para o próximo passo.
Sem uma compilação realizada com sucesso, não conseguiremos realizar o deploy desse nosso WebSite.
Claudio Leite
Claudio Leite é consultor de ALM da Lambda3, Visual Studio ALM Ranger, PSD, PSM I e PSM II. Graduado em Ciência da Computação pela Universidade Católica de Petrópolis, MBA e POS-MBA em Gestão de Projetos pela Fundação Getúlio Vargas. Twitter: @claudiobernardo