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. 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.

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

 

Business Motivation Model

BusinessBusiness Motivation Model. Have you thought about what motivates a business? How link Vision <-> Mission <-> Strategy? Where are the intents?

Below you can see an effort from OMG to map business motivational model which is quite interesting. I not totally agree however give a idea of some major areas when we talk about where originates the business motivations.

business-motivation-model

It is a draft post, I will link this topic with the Customer Problem discussion soon. :)

References:

[1]Veres, C., Sampson, J., Cox, K., Bleistein, S., & Verner, J. (2010). An Ontology-Based Approach for Supporting Business-IT Alignment. In Complex Intelligent Systems and Their Applications (pp. 21-42). Springer New York.

[2]http://www.businessrulesgroup.org/second_paper/BRG-BMM.pdf

[3] OMG Business Motivation Model http://www.omg.org/spec/BMM/1.1/