Construa e implante continuamente

Quando vários desenvolvedores colaborem em projetos de software complexo, pode ser um processo longo e imprevisível para integrar diferentes partes do código juntos. No entanto, você pode fazer esse processo mais eficiente e mais confiável, se você cria e implanta seu projeto continuamente.

CI (integração contínua) é o processo de integração de seu código em um repositório compartilhado com a maior freqüência possível. Durante a integração do código, uma quebra de compilação ou uma falha de teste pode informá-lo, de maneira oportuna, um erro no seu código.

Martin Fowler tem a divisão de práticas recomendadas para a integração contínua a seguir:

  • Manter um repositório único de origem.

  • Automatize a compilação.

  • Verifique sua compilação duplicam.

  • Check-in pelo menos uma vez por dia.

  • Compilar cada check-in no servidor de CI.

  • Manter a compilação rápida.

  • Teste em um clone do ambiente de produção.

  • Torna fácil para qualquer pessoa obter o mais recente executável.

  • Estar ciente de que está acontecendo.

  • Automatize a implantação.

Para obter mais informações, consulte a seguinte página no site de Martin Fowler: Integração contínua.

Visual Studio Application Lifecycle Management (ALM)ajuda você a gerenciar o processo de ponta a ponta do desenvolvimento de software e oferece suporte para a prática de integração contínua. Aproveitando os recursos do Visual Studio ALM, seu projeto pode evitar atrasos inesperados, saturações de custos e riscos de execução.

Neste tópico

  • Gerenciamento de dependências

  • Integração contínua em 2010 de Visual Studio

  • Obtendo pronto e iniciado

  • Controle de Versão

  • Criar

  • Teste e implantação

  • Comunicação e a integração do projeto

Gerenciamento de dependências

Integrar o código é um processo complexo devido as dependências entre o código. Por exemplo, uma biblioteca que desenha um círculo em uma tela depende do método Sqrt() as bibliotecas matemáticas do sistema. Se o método Sqrt() for alterado, você deve atualizar a biblioteca de acordo. Hardware e sistemas operacionais alterar com uma freqüência muito menos do que o seu projeto de equipe. No entanto, a ignorar as alterações em nenhuma circunstância pode levar a resultados desastrosos. Você pode integrar seu código mais cedo possível para examinar se estiver baseado em suposições válidas e se ele funciona conforme planejado.

Alterações no código podem afetar dependências de forma diferente. A ilustração a seguir mostra duas situações. O exemplo à esquerda mostra uma alteração relativamente isolada. No entanto, o exemplo à direita mostra uma alteração com maior impacto potencial porque há várias dependências nele.

Diagrama de compilação e implantação de código

A ilustração a seguir mostra como as alterações de constante pode ter efeitos compostos, se você não for integrar e atualizar continuamente o seu código.

Linha do tempo de compilação e implantação contínuas de código

Na etapa 1, você alterar o h de bloco de código, potencialmente, dependente de todos os blocos de código afeta a, b, d, e e f. Na etapa 2, você alterar os dois blocos de código um e b. Se a equipe não integrar entre as etapas 1 e 2, bloqueia um e b pode não ser válido. Na etapa 3, você pode alterar o código bloco f. Supondo que a equipe não integrar entre as etapas 2 e 3, bloco de código b nesse ponto foi afetado, alterado e afetado novamente. Como resultado, o bloco de código b pode se tornar difíceis de corrigir.

Integração contínua em 2010 de Visual Studio

Visual Studio ALMfornece conjuntos de ferramentas integrados para oferecer suporte a integração contínua. Como mostra a ilustração a seguir, essas ferramentas incluem o controle de versão, compilar, testar a implantação de um ambiente de laboratório, rastreamento de item de trabalho e os funcionalidade de armazenamento de dados.

TFS em compilação e implantação contínuas

Primeiro, você pode usar Controle de versão do Team Foundation para gerenciar a integração entre elas, conjuntos de alterações e ramificações. Cada membro da equipe pode usar espaços de trabalho para trabalhar de forma independente. Para obter mais informações, consulte Ramificação e mesclagem e Configurar a sua máquina de desenvolvimento para trabalhar com projeto do sua equipe.

Em segundo lugar, você pode usar Team Foundation Build para compilar, testar e implantar o software em um sistema automatizado e distribuídos. Como mostra a ilustração anterior, Team Foundation Build tem dois tipos de compilações. Um tipo usa um tipo de compilação contínua para construir a ramificação de desenvolvimento. O outro tipo usa um tipo de compilação gated check-in para criar a ramificação principal. Visual Studio Team Foundation Serveroferece suporte a cinco tipos de compilações: manual, contínua (disparado por cada check-in), sem interrupção (Acumular check-ins até que a compilação anterior seja concluída), gated check-in e programados. Para obter mais informações, consulte Criar uma definição de compilação básico, Noções básicas sobre um sistema de compilação do Team Foundation, e Check-In alterações pendentes que são controlados por um Check-in Gated construir.

Terceiro, recursos de gerenciamento do laboratório de Visual Studio ALM ajudam a definir e implantar compilações para ambos os ambientes de laboratório físico e virtual. Para capturar erros de integração em tempo de execução em um ambiente específico, você pode implantar uma compilação em um ambiente de laboratório e executar suítes de teste nesta compilação. Para obter mais informações, consulte Usando um laboratório Virtual para o seu ciclo de vida do aplicativo.

Além disso, testar os recursos em Visual Studio ALM estão disponíveis em membros da equipe máquinas, na máquina de compilação e dentro do ambiente de laboratório. Primeiro, executar as suítes de teste na máquina do desenvolvedor detecta problemas com o código que foi alterado ou criado recentemente. Segundo, executando os testes no build machine detectando problemas relacionados à integração com outros códigos. Em terceiro lugar, a execução de testes no laboratório detecta problemas relacionados a um ambiente específico que configura a sua equipe. Para obter mais informações, consulte Como: Configurar e executar agendada testes após a criação do aplicativo.

ObservaçãoObservação

Executando testes pode gerar métricas de cobertura de código, você pode usar para entender o quanto seus casos de teste pode cobrir de código. No entanto, é possível usar a cobertura de código, a abrangência do teste de medida ou qualidade. Para obter mais informações, consulte Como: Configurar cobertura de código usando configurações de teste para testes automatizados.

Quarto, Visual Studio Team Foundation Server é o repositório que funcionam a armazenamentos de itens. Você pode criar, gerenciar e controlar os itens de trabalho, como, por exemplo, bugs ou tarefas, que são atribuídas a membros da equipe. Se uma compilação falhar durante a integração do código, sua equipe deve corrigir o problema assim que possível. Você pode configurar Team Foundation Server para criar itens de trabalho para criar quebras. Para obter mais informações, consulte Acompanhamento de Bugs, tarefas e outros itens de trabalho.

Último, os bancos de dados do depósito para Team Foundation Server e SQL Server Analysis Services agregar e relacionar todos os dados que são fornecidos por subsistemas na Team Foundation Server. Esses subsistemas incluem o controle de versão, compilação, teste, implantação e acompanhamento do item de trabalho. Portanto, sua equipe pode visualizar o processo de ponta a ponta da integração contínua. Para obter mais informações, consulte Geração de relatórios usando o banco de dados relacional Warehouse para ALM de Visual Studio.

Obtendo pronto e iniciado

Sua equipe pode levar a progressão seguinte para iniciar a integração contínua e Team Foundation Server:

  1. Use Controle de versão do Team Foundation para integrar o código em um único código base.

  2. Criar um tipo de criação manual de Team Foundation Build.

  3. Execute casos de teste automatizados para verificar a qualidade da sua compilação. Se você não tiver uma suíte de testes apropriados, criar um conjunto de testes de espaço reservado e importar alguns casos de teste automatizados. Esse pacote pode servir como um espaço reservado para testes futuros.

  4. Certifique-se de fornecer os binários resultantes de uma compilação em um local compartilhado. Essa estratégia pode ajudá-lo a diagnosticar problemas que aparecem durante o teste.

  5. Use Microsoft Test Manager para capturar erros de integração em tempo de execução em um ambiente específico.

Controle de Versão

Um sistema de controle de versão fornece um repositório compartilhado para o seu código. Uma pequena equipe pode trabalhar com uma única ramificação. No entanto, é trabalhar com dois ou mais ramificações mais viável porque você geralmente deve desenvolver várias versões do código e liberar o seu projeto em etapas diferentes. Para obter mais informações sobre como criar e mesclar as ramificações do código, consulte a seguinte página no site da CodePlex: Team Foundation Server de ramificação guia 2.0.

Criar

Integração contínua, o sistema de compilação gera os componentes executáveis que podem ser testados e implantados. Um sistema de compilação também fornece comentários na forma de avisos e erros de compilação. Esses erros são causados por alterações que são introduzidas na fonte do projeto.

Team Foundation Buildfornece os seguintes tipos de compilação:

  • Manual – compilações são enfileiradas pelos integrantes da equipe.

  • Contínua – compilações são enfileiradas por um check-in para uma ramificação de controle de versão.

  • Sem interrupção – compilações acumularem até que a compilação anterior termine.

  • Gated check-in – Check-ins são aceitos somente se as alterações enviadas mesclagem e compilar com êxito.

  • Compilações programadas – ocorrerem em um agendamento definido.

Para obter mais informações, consulte Criar uma definição de compilação básico.

Quais são as expectativas dos integrantes da equipe para implementar com êxito a integração contínua?

Os membros da equipe devem organizar suas origens para que eles tomem não tenha mais de 10 minutos para criar. Para projetos maiores, talvez não seja possível essa freqüência. Usando Team Foundation Server, sua equipe pode configurar várias definições de compilação que criar diferentes subconjuntos da base de código. Se as compilações levar muito tempo, você pode usar um tipo de compilação sem interrupção para gerar continuamente binários para o código inalterado.

Se a quebra de uma compilação, e quando sua equipe deve corrigir a compilação imediatamente. Supondo que a ramificação principal não obter afetada por uma integração inversa ruim, a maioria criar quebras são de um check-in incorreto em uma ramificação de trabalho ou uma integração direta a partir da ramificação principal. É uma boa idéia para atribuir a tarefa de corrigir quebras de compilação para um membro da equipe para um período de tempo e, em seguida, para girar a esta atribuição entre os membros da equipe.

Quantas compilações devem ser executadas por dia?

Quando você integra continuamente o seu código, você pode executar uma compilação contínua para cada check-in que ocorre em cada ramificação. Você também pode executar uma compilação sem interrupção, é independente do novo código de check-in. Para obter mais informações, consulte Criar uma definição de compilação básico e Monitorar o progresso de uma compilação de execução.

Como Team Foundation Server de ajudar código construir mais rápido?

Configurando a definição de compilação para executar compilações incrementais ajudará a aumentar a velocidade da compilação. Você pode usar os logs de compilação para identificar partes lentas de compilação, onde há uma oportunidade para aperfeiçoar. Para obter mais informações, consulte Configurar o Team Foundation Build para uma compilação Incremental.

Como pode o Team Foundation Build ajuda escala integração contínua?

Compilação de controladores e agentes de compilação podem ajudar a dimensionar o ciclo de integração contínua.

Para obter mais informações, consulte Noções básicas sobre um sistema de compilação do Team Foundation.

Teste e implantação

Como o teste e implantação se enquadra em integração contínua?

A ilustração a seguir mostra como os recursos de teste e implantação em Visual Studio ALM ajustam a integração contínua.

Ajustar o teste na integração contínua

Primeiro, quando você integrar continuamente o seu código, você pode encontrar problemas com o código da compilação propriamente dito. A compilação foi bem-sucedida ou não compilado, considerando o compilador que você usou. Você pode gerar um relatório de compilação que contém o erro e mensagens de aviso do compilador do. Em Visual Studio ALM, o relatório de compilação também fornece informações, como os bugs foram corrigidos nesta compilação, quais conjuntos de alterações foram incluídos nesta compilação, e se a análise de código foi executada durante a compilação. Usando Visual Studio ALM, você pode verificar se o design do seu código segue as regras que define a sua equipe. Para obter mais informações, consulte Como: Valide.NET Code contra os diagramas de camada.

Em segundo lugar, você pode encontrar problemas com seu código executando testes de unidade. Esses testes diagnosticar problemas de forma diferente dos compiladores. As regras do compilador verificar problemas com construções de linguagem e da sintaxe do código. Em contraste, os testes de unidade (que podem ser executado em uma compilação depois de concluído) podem verificar qualquer aspecto funcional do código. Esses testes de unidade também podem fornecer métricas como, por exemplo, a cobertura de código em uma compilação, dada um conjunto de testes de unidade. Para obter mais informações, consulte Como: Configurar cobertura de código usando configurações de teste para testes automatizados.

Usando Microsoft Test Manager, você pode configurar um ambiente específico no qual você pode executar testes. Testes de unidade isolada podem fornecer um nível de verificação funcional. No entanto, os ambientes têm os seguintes aspectos importantes:

  • Ambientes variados podem afetar o funcionamento do código. Por exemplo, topologia e as configurações de rede podem ser difícil sem um ambiente de gerenciamento do laboratório de teste.

  • Automatizando a implantação de código em um ambiente específico ajuda a sua equipe, diminuir o tempo de implantação e aumentar o número de iterações de implantação.

Para obter mais informações, consulte How to: Create an Environment from Virtual Machine Templates e Configurando as máquinas de teste para executar testes ou coletar dados.

Como é possível organizar meus suítes de teste para habilitar a integração contínua?

Você pode executar as suítes de testes são mais importantes para suas criações contínuas, porque muitos testes podem atrasar a conclusão da compilação. Certifique-se de que você execute esses testes para a iteração atual.

Em um ciclo de compilação noturno ou agendadas, você também pode executar testes de compilações anteriores e os passos de teste completo para verificam a funcionalidade do anteriores sprints em seguida.

Como a integração contínua afeta a equipe de teste?

Integração contínua ajuda a identificar as compilações que contêm erros, para que sua equipe de teste não desperdice tempo trabalhando e instalando ruim se baseia.

Comunicação e a integração do projeto

O esforço de implementação de integração contínua pode ser significativo, dependendo do tamanho do seu projeto. Sua equipe deve definir e agendar o trabalho de integração contínua no primeiro sprint do projeto.

Se você quiser adotar a integração contínua em estágios, você pode iniciar Implementando a compilação automatizada. Em seguida, você pode modificá-lo para incluir a execução de testes de unidade. Finalmente, você pode adicionar os recursos de implantação a compilação testada em um ambiente de laboratório e, em seguida, você pode executar os testes dentro do ambiente para verificar se um ambiente variado afeta o código.