TeamBuild + WebSite

Fala pessoal,

Eu estou precisando montar uma solução para um cliente que temos que fazer o deploy automático de um site usando o Team Build. Existem milhares de posts explicando o procedimento de como usar o Team Build e o Web Deploy para fazer isso, mas como sempre, cada situação tem sua peculiaridade, essa não seria diferente.

Na situação atual nós temos que fazer o deploy de um site que foi criado usando o WebSite project do Visual Studio e por isso, várias da facilidades que teriamos com uma Web Application foram por água abaixo, obrigando a realizar um procedimento bem diferente do que temos publicado por aí.

Vamos primeiro aos desafios:

1 – Por utilizar o WebSite project, nós não temos um arquivo do vb.proj ou cs.proj, que já contém algumas definições de build e agrupa todos os projetos que devem ser compilados para que o site funcione corretamente.

2 – Precisamos fazer o controle do web.config por ambiente, e para variar, como não é uma WebApplication, a funcionalidade do WebConfigTransformation também não está disponível, nos obrigando a fazer esse procedimento na mão.

3 – Algumas máquinas de deploy não estão no mesmo dominio nem rede, o que complica um pouco mais o modelo de passagem do pacote do servidor de Build para as máquinas onde deveremos realizar o Deploy.

Vamos a solução proposta e aos poucos vou publicando um artigo para cada um dos passos descritos.

Preparando o ambiente:

Para que tudo funcione precisaremos ter instalado no nosso ambiente:

  • 1 servidor de Build (preferencialmente uma máquina separada do servidor de aplicação do TFS)
  • 1 servidor de homologação
  • 1 servidor de produção

Para os servidores de homologação e produção, precisaremos ter instalado o IIS 7 ou superior, Web  Deployment Kit 2.1 ou superior, SO Windows 2008 Server (essa foi a configuração que eu usei no meu ambiente de teste).

Passos para a solução:

1 – Primeiro vamos configurar uma Build Definition que pelo menos compile o WebSite com todos os pré-requisitos que precisamos e depois faremos uma cópia manual desses arquivos para o IIS e ver se o site está funcionando como deveria

2 – Sabendo que nosso modelo de compilação está funcionando, vamos começar a realizar o deploy dessa compilação no IIS. Para isso iremos customizar um processo de build que contenham as tarefas de Web Deploy e faremos o deploy automático

3 – Para finalizar, vamos criar o nosso web.config transformation. Iremos criar mais uma tarefa customizada para realizar essa atividade.

4 – Por ultimo, alguns pontos de verificação e modelos que talvez você tenham que implementar para comunicação entre as máquinas em dominios diferentes para a passagem do pacote de deploy.

Depois disso tudo, teremos o nosso deploy automático com web.config transformation em Website projects!

Qualquer dúvida, deixem seus comentários que irei ter o maior prazer em responder.

Até a próxima.