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
- Instale o Jenkins em uma maquina Windows Server (e.g. Windows 2012 R2).
- Inicie os serviços do Jenkins.
- Instale os plugins mencionados.
- Crie um job para o seu projeto.
- 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.
- Na opção “Build a Visual Studio project or solution using MSBuild” Configure:
- A versão do MSBuild que quer compilar o projeto(e.g. VS 2012)
- Selecione o arquivo de solução .SLN
- 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
[10] https://github.com/nant/nant
[11] http://social.technet.microsoft.com/wiki/pt-br/contents/articles/33965.integracao-continua-com-net.aspx