Integração contínua com .NET

Integração Continua com .NET

Este artigo tem o objetivo de descrever como utilizar a prática de Integração Contínua (do inglês Continuous Integration)  em projetos .NET on-premises. Este artigo é sobre a utilização de práticas de engenharia de software em .NET. Existe uma cópia deste post no technet da microsoft. Para CI/CD no Azure de uma olhada no meu outro post.

Retratação: Adianto que algumas decisões podem ser estranhas para quem é nativo Microsoft, neste caso eu não sou, caso você tenha alguma outra forma mais fácil eu ficarei grato em aprender com você.

O que é Integração Contínua?  <brevemente>

“Integração Contínua é uma pratica de desenvolvimento de software onde os membros de um time integram seu trabalho frequentemente, geralmente cada pessoa integra pelo menos diariamente – podendo haver múltiplas integrações por dia. Cada integração é verificada por um build automatizado (incluindo testes) para detectar erros de integração o mais rápido possível. Muitos times acham que essa abordagem leva a uma significante redução nos problemas de integração e permite que um time desenvolva software coeso mais rapidamente.” Martin Fowler

 

 

Porque preciso do servidor de CI?

  • Build de projetos
  • Execução de Testes Unitários
  • Analise de Código
  • Estatísticas sobre o Código
  • Cobertura de testes unitários.

Porque preciso da prática de CI?

  • Aprender Rápido e Falhar Rápido
  • Reduzir Riscos
  • Aumento de Qualidade
  • Aumentar a Visibilidade do Projeto
  • Redução de processos manuais ou repetitivos

Como colocar um CI em .NET?

Pré-requisitos

É necessário que você tenha um projeto dentro de um controle de versão como Git ou SVN. É necessário também você ter um jenkins instalado (em um servidor idealmente), porem pode ser na sua maquina mesmo.

Aplicativos/Ferramentas

Para este exemplo estou utilizando as seguintes ferramentas:

  • Jenkins [7]
  • Jenkins Plugin – MSBuild Plugin [4]
  • Jenkins Plugin – Version Number
  • Jekins Plugin – Git Plugin
  • Jekins Plugin – Copy Artifact Plugin [5]

Passo a Passo

  1. Instale o Jenkins em uma maquina Windows Server (e.g. Windows 2012 R2).
  2. Inicie os serviços do Jenkins.
  3. Instale os plugins mencionados.
  4. Crie um job para o seu projeto.
  5. Na opção “Gerenciamento de código fonte” configure o servidor de controle de versão para obter o código fonte do seu projeto.
  6. Na opção “Build a Visual Studio project or solution using MSBuild” Configure:
  7. A versão do MSBuild que quer compilar o projeto(e.g. VS 2012)
  8. Selecione o arquivo de solução .SLN
  9. Aperte em “Construir agora”.

Conclusão

A implementação inicial de um CI não é complicado, mas é necessário aprender um conjunto novo de ferramentas. Cada projeto irá requerer fases diferentes dentro da construção, como por exemplo, publicar a versão construída em uma plataforma Azure. Nesta primeira revisão deste artigo foi apresentado o básico de um CI em .NET, as próximas alterações serão em tópicos específicos. Caso tenha um cenário interessante, por favor, comente e vamos implementa-lo.

Testes Futuros

  • Utilização do Jenkins 2.0 [8]
  • Utilizar gradle [9]
  • Utilizar NAnt [10]

Referencias

[1] Continous Integration with .NET from Craigberntson.com

[2] http://blog.caelum.com.br/integracao-continua

[3] http://www.martinfowler.com/articles/continuousIntegration.html

[4] https://wiki.jenkins-ci.org/display/JENKINS/MSBuild+Plugin

[5] https://wiki.jenkins-ci.org/display/JENKINS/Copy+Artifact+Plugin

[6] https://wiki.jenkins-ci.org/display/JENKINS/Version+Number+Plugin

[7] https://jenkins.io/

[8] https://jenkins.io/2.0/

[9] http://gradle.org/

[10] https://github.com/nant/nant

[11] http://social.technet.microsoft.com/wiki/pt-br/contents/articles/33965.integracao-continua-com-net.aspx