Lo que al principio iba ser un post sobre como crear un entorno de integración continua desde cero, al final, se ha tenido que transformar en una pequeña serie (no se si de tres o cuatro posts) ya que todo en uno quedaba demasiado grande y quizás un poco inmanejable.
Imagino que a estas alturas, y sobre todo, después de leer la serie de posts sobre desarrollo ágil todo el mundo sabrá, o al menos, tendrá una pequeña noción de lo que es un entorno de integración continua, de su función y de sus componentes. En principio, la idea de este post (esta serie) no es explicar ninguno de estos puntos, si no montar un entorno de integración continua en nuestros servidores.
Aunque existen en internet múltiples servicios que ofrecen repositorios online, o sistemas de integración online, generalmente, estos son más útiles a nivel personal o a nivel de proyectos de software libre que para una empresa sobre todo, aquellas que desarrollan sus propios productos para la venta. Estos sistemas online quizás no les den la seguridad y la confidencialidad que necesitan. Además, la seguridad de estos servicios online depende de terceros, y esto es algo que tampoco suele gustar ya que, por un lado, no sabes quien puede tener acceso a tu código fuente y, por otro lado, cualquier intrusión que se produzca puede hacer que nuestro código, aquello de lo que vive nuestra empresa, pase a manos de “la nube”. Por todas estas razones, en muchas ocasiones, es mejor montar nuestro propio servidor interno de repositorio e integración.
Pero, sin más demora, vamos a ello.
¿Qué vamos a montar? La idea es montar lo siguiente:
- Un servidor Git donde albergar nuestro código fuente.
- Un servidor con Jenkins instalado y funcionando.
- Una tarea en Jenkins que. utilizando Maven, compile nuestro código y lo despliegue.
- Además, las herramientas necesarias para que el desarrollador trabaje con todo ello.
Todo esto lo vamos a montar sobre una distribución de Linux, para ser más concreto, en este caso lo vamos a montar sobre un Ubuntu 12.04. Aunque supongo que portar los pasos explicados a cualquier otra distribución no debe entrañar demasiada dificultad.