Criação e execução de um arquivo de comando de implantação

por Jason Lee

Este tópico descreve como criar um arquivo de comando que permitirá que você execute uma implantação usando arquivos de projeto do Microsoft Build Engine (MSBuild) como um processo repetível de etapa única.

Este tópico faz parte de uma série de tutoriais baseados nos requisitos de implantação corporativa de uma empresa fictícia chamada Fabrikam, Inc. Esta série de tutoriais usa uma solução de exemplo, a solução do Contact Manager , para representar um aplicativo Web com um nível realista de complexidade, incluindo um aplicativo ASP.NET MVC 3, um serviço WCF (Windows Communication Foundation) e um projeto de banco de dados.

O método de implantação no centro desses tutoriais baseia-se na abordagem de arquivo de projeto dividido descrita em Noções básicas sobre o processo de build, no qual o processo de build é controlado por dois arquivos de projeto, um contendo instruções de build que se aplicam a cada ambiente de destino e outro que contém configurações de build e implantação específicas do ambiente. No momento do build, o arquivo de projeto específico do ambiente é mesclado no arquivo de projeto independente do ambiente para formar um conjunto completo de instruções de build.

Visão geral do processo

Neste tópico, você aprenderá a criar e executar um arquivo de comando que usa esses arquivos de projeto para executar uma implantação repetível em seu ambiente de destino. Essencialmente, o arquivo de comando simplesmente precisa conter um comando MSBuild que:

  • Informa ao MSBuild para executar o arquivo Publish.proj independente do ambiente.
  • Informa ao arquivo Publish.proj qual arquivo contém as configurações de projeto específicas do ambiente e onde encontrá-lo.

Criar um comando MSBuild

Conforme descrito em Noções básicas sobre o processo de build, o arquivo de projeto específico do ambiente, por exemplo, Env-Dev.proj, foi projetado para ser importado para o arquivo Publish.proj independente do ambiente no momento do build. Juntos, esses dois arquivos fornecem um conjunto completo de instruções que informam ao MSBuild como criar e implantar sua solução.

O arquivo Publish.proj usa um elemento Import para importar o arquivo de projeto específico do ambiente.

<Import Project="$(TargetEnvPropsFile)"/>

Dessa forma, ao usar MSBuild.exe para criar e implantar a solução do Contact Manager, você precisa:

  • Execute MSBuild.exe no arquivo Publish.proj .
  • Especifique o local do arquivo de projeto específico do ambiente fornecendo um parâmetro de linha de comando chamado TargetEnvPropsFile.

Para fazer isso, o comando MSBuild deve ser semelhante a este:

msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj

A partir daqui, é uma etapa simples para mover para uma implantação repetível em etapa única. Tudo o que você precisa fazer é adicionar o comando MSBuild a um arquivo .cmd. Na solução Gerenciador de Contatos, a pasta Publicar inclui um arquivo chamado Publish-Dev.cmd que faz exatamente isso.

%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe Publish.proj /fl /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj
echo 
pause

Observação

O comutador /fl instrui o MSBuild a criar um arquivo de log chamado msbuild.log no diretório de trabalho no qual MSBuild.exe foi invocado.

Para implantar ou reimplantar a solução do Gerenciador de Contatos, basta executar o arquivo Publish-Dev.cmd . Quando você executar o arquivo, o MSBuild:

  • Crie todos os projetos na solução.
  • Gere pacotes Web implantáveis para os projetos de aplicativo Web.
  • Gere arquivos .dbschema e .deploymanifest para os projetos de banco de dados.
  • Implante os pacotes Web no servidor Web.
  • Implante o banco de dados no servidor de banco de dados.

Executar a implantação

Ao criar um arquivo de comando para seu ambiente de destino, você deve ser capaz de concluir toda a implantação simplesmente executando o arquivo.

Para implantar a solução do Contact Manager em seu ambiente de teste

  1. Na estação de trabalho do desenvolvedor, abra o Windows Explorer e navegue até o local do arquivo Publish-Dev.cmd.

  2. Clique duas vezes no arquivo para executá-lo.

  3. Se uma caixa de diálogo Abrir Arquivo – Aviso de Segurança for exibida, clique em Executar.

  4. Se as configurações e os servidores de teste estiverem configurados corretamente, a janela prompt de comando mostrará uma mensagem Build bem-sucedida quando o MSBuild terminar de processar os arquivos de projeto.

    Se as configurações e os servidores de teste estiverem configurados corretamente, a janela prompt de comando mostrará uma mensagem Build bem-sucedida quando o MSBuild terminar de processar os arquivos de projeto.

  5. Se essa for a primeira vez que você implantou a solução nesse ambiente, precisará adicionar a conta de computador do servidor Web de teste às funções db_datawriter e db_datareader no banco de dados ContactManager . Este procedimento é descrito em Configurar um servidor de banco de dados para publicação de implantação na Web.

    Observação

    Você só precisa atribuir essas permissões ao criar o banco de dados. Por padrão, o processo de build não recriará o banco de dados em cada implantação. Em vez disso, ele comparará o banco de dados existente com o esquema mais recente e fará apenas as alterações necessárias. Como resultado, você só deve mapear essas funções de banco de dados na primeira vez que implantar a solução.

  6. Abra a internet Explorer e navegue até a URL do aplicativo Contact Manager (por exemplo, http://testweb1:85/ContactManager/).

  7. Verifique se o aplicativo funciona conforme o esperado e se você pode adicionar contatos.

    Verifique se o aplicativo funciona conforme o esperado e se você pode adicionar contatos.

Conclusão

A criação de um arquivo de comando que contém as instruções do MSBuild fornece uma maneira rápida e fácil de criar e implantar uma solução de vários projetos em um ambiente de destino específico. Se você precisar implantar repetidamente sua solução em vários ambientes de destino, poderá criar vários arquivos de comando. Em cada arquivo de comando, o comando MSBuild criará o mesmo arquivo de projeto universal, mas especificará um arquivo de projeto específico do ambiente diferente. Por exemplo, um arquivo de comando para publicar em um ambiente de desenvolvedor ou de teste pode conter este comando MSBuild:

msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj

Um arquivo de comando para publicar em um ambiente de preparo pode conter este comando MSBuild:

msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Stage.proj

Observação

Para obter diretrizes sobre como personalizar os arquivos de projeto específicos do ambiente para seus próprios ambientes de servidor, consulte Configurar propriedades de implantação para um ambiente de destino.

Você também pode personalizar o processo de build para cada ambiente substituindo propriedades ou definindo várias outras opções no comando MSBuild. Para obter mais informações, consulte Referência de linha de comando do MSBuild.