Publicando sua aplicação no IIS com TFS 2010

Já descrevi aqui como utilizar o build automático usando o TFS 2010, porém nesse post o build era copiado apenas para uma pasta compartilhada no servidor de Build, mas como fazer para publicar a aplicação direto no IIS?

Nesse post vou descrever como  podemos publicar nossa aplicação em diversos ambientes com o IIS 7

1) WebDeployment Tool

Primeiro de tudo temos que instalar no servidor onde está o IIS a ferramenta WebDeployment Tool 2.1 que pode ser instalado usando o WebPlataform Installer

Essa ferramenta irá nos auxiliar a conectar no IIS para fazer a publicação da nossa aplicação

Depois de instalado o WebPlataform Installer basta localizar o aplicativo e instalar

Configurando a aplicação

Quando estamos falando de publicação de aplicações, sempre temos vários ambientes como Teste, Homologação e Produção e para cada ambiente desses sempre vamos ter diferentes configurações, geralmente a configuração que mais se altera é a string de conexão, onde para cada ambiente vamos ter uma banco de dados diferentes

Web.Config Transformations

Como podemos resolver esse problema, já que nosso build será automático, e não queremos ficar configurando na mão?

A resposta está no post anterior, onde falamos de Web.Config Transform, configurando nossos Web.Configs para cada ambiente, no build do TFS podemos setar para usar aquela configuração do Web.Config

Outra configuração que temos que fazer em nosso projeto é editar o arquivo csproj, clique com o botão direito sobre o projeto e selecione a opção Unload Project

Novamente clique com o botão direito sobre o projeto e selecione a opção Edit WebConfigTransforms.csproj

No final do arquivo adicione as seguintes linhas

[sourcecode language=”xml”]
</ProjectExtensions>
<Target Name="AfterBuild">
<TransformXml
Condition="Exists(‘$(OutDir)\_PublishedWebsites\$(TargetName)’)"
Source="Web.config"
Transform="$(ProjectConfigTransformFileName)"
Destination="$(OutDir)\_PublishedWebsites\$(TargetName)\Web.config" />
</Target>
[/sourcecode]

Essa configuração é necessária para quando o build do TFS for executado, o Web.Config Transform também seja executado, para mais detalhes acessar essa thread no fórum do MSDN – http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/d5c6cc7b-fbb1-4299-a8af-ef602bad8898/

Depois clique novamente com o botão direito sobre o projeto e selecione a opção Reload Project

Outra opção para editar o arquivo csproj é usar o PowerCommands for Visual Studio 2010

Configurando o IIS

Vamos criar os ambientes no IIS, para isso abra o IIS 7 e clique com o botão direito sobre Sites e selecione a opção Add Web Site

Preencha os campos conforme a imagem abaixo:

Repita esse procedimento para os ambientes de Homologação e Testes, ao final teremos 3 ambientes separados, conforme abaixo

Configurando o Build

Vamos criar um Build Definition para cada ambiente, para mais informações de como criar um Build Definitions veja o post Configurando Build com TFS 2010, veja na imagem abaixo como deve ficar

Abara o arquivo Projeto SDL – Build Manual – Teste e clique na aba Process e depois Configurations to Build

Clique em Add

Digite o nome do ambiente, nesse caso Teste que é o mesmo nome do Web.Teste.Config e no campo Plataform selecione Any CPU, conforme a imagem abaixo

Ainda temos que passar alguns parâmetros para o MsBuild, para isso selecione a opção Advanced e no campo MSBuild Argument adicione as seguintes linhas

/p:DeployOnBuild=True/p:DeployTarget=MsDeployPublish /p:CreatePackageOnPublish=True /p:MSDeployPublishMethod=RemoteAgent /p:MSDeployServiceUrl=http://servidor/msdeployagentservice /p:DeployIisAppPath=”teste” /p:UserName=dominio\usuario /p:Password=senha

Os comandos mais importantes são:

  • /p:MSDeployServiceUrl=http://servidor/msdeployagentservice – Agente responsável pela publicação, foi instalado pelo Web Deployment Tool
  • /p:DeployIisAppPath=”teste”– Nome do Web Site que criamos lá no IIS
  • /p:UserName=dominio\usuario – Usuário que tem permissão no Web Site do IIS
  • /p:Password=senha – Senha do usuário

Repita esse procedimento para os builds definitions Projeto SDL – Build Manual – Homologacao e Projeto SDL – Build Manual – Producao

Executando o Build

Depois de configurado basta executar o build, selecione a opção

Aguardando a execução dos builds

Builds finalizados

Agora vamos acessar os endereços no IIS e verificar se a publicação ocorreu com sucesso

Ambiente de Teste

Ambiente de Homologação

Ambiente de Produção

Veja que temos 3 endereços diferentes e 3 configurações distintas sendo uma para cada ambiente

Referências

http://vishaljoshi.blogspot.com.br/2010/11/team-build-web-deployment-web-deploy-vs.html

Deixe seu comentário, opinião, critica

Aquele abraço!

Sobre Leandro Prado

Leandro Silveira Prado é Premier Field Engineer na Microsoft especializado em Application Lifecycle Management.