Integracion Continua (parte I)

Quisiera poner aqui parte de mi autoaprendizaje sobre la inquietud de cómo hacer Integración Continua. Pero no es el principal objetivo, sino aprender a utilizar todas las herramientas de integración continua (maven, junit, Programacion Orientada a Objetos, Spring, Jenkis…) para desarrollar módulos independientes y fusionarlos en proyectos. La principal idea de estos post es hacer un How To. Lo publico en internet para si, me equivoco en algo, me lo digas y asi poder rectificar y aprenderlo bien. Esta es la complejidad de ser autodidacta. Empezemos.

Disponemos de dos módulos realizados con maven: modulo_mail y modulo_socket. Estos módulos tienen su interfaz, su código ya implementado, sus test unitarios y su pom (gestiona las dependencias, compila, genera las fuentes, el javadoc y ejecuta los test).

Ahora nos han indicado que tenemos que realizar un nuevo proyecto: tenemos que hacer un socket que escuche en un puerto, en el que lo que se le mande, lo envía por correo.

De acuerdo, manos a la obra. Tenemos prácticamente todo hecho. Tenemos quien nos construya el socket, y quien nos envie los emails, solo necesitamos algo que lo integre todo y realice la funcionalidad que nos han indicado.

Tenemos dos maneras de actuar:
a) tratando estos módulos como independientes. Es decir, añadirlos como una dependencia en el pom.
b) tratando los módulos como algo vivo de lo que queremos hacer. Es decir, queremos añadir una nueva funcionalidad al modulo_mail: envio de adjuntos, y otra al modulo_socket: conexión SSL.

Tenemos que tener en cuenta que si estos módulos son utilizados por otros proyectos, cualquier cambio que hagamos en ellos puede alterar estos otros proyectos. Aunque bueno, para eso están las versiones. Pero para ello habría que tener un buen control de qué contiene cada versión.

Pero bueno, supongamos que queremos la opción b), para hacer un desarrollo conjunto. Bueno, para que no se nos vaya de las manos, necesitamos la Integracion Continua. Necesitamos que algo vaya a nuestros repositorio de código y cada vez que subimos algo, lo compile, realice los test y lo integre con todos los demás proyectos. De esta manera ese algo nos facilita bastante el saber si cualquier cambio que realicemos afecta a otros proyectos o no.

No voy a explicar como hacer funcionar un servidor de integración continua. Pero si como vamos a hacer este nuevo proyecto. Sigamos integrando las partes.

Repasemos, tenemos dos módulos, con sus pom, sus test y su código. Necesitamos integrarlos, haciendo un nuevo modulo.

(Continuara… pendiente de revision, publicar imagenes y de que pongas algun comentario)

Integracion Continua (parte I)