Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Cochabamba – Bolivia
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
ii
Tabla de Contenido
Introducción 6
1 Generalidades 7
1.1 Antecedentes Generales 7
1.2 Antecedentes Específicos 9
2 Metodología 10
3 Componentes de Integración Continua 10
3.1 Compilador de proyectos y administrador de dependencias 11
3.1.1 Maven 11
3.1.2 Gradle 13
3.2 Controlador de Versiones Git 15
3.3 Repositorio de Artefactos Nexus 17
3.4 Servidores de Integración Continua 19
3.4.1 Jenkins 19
3.4.2 GoCD 21
3.4.2.1 Conceptos Importantes GoCD 23
3.4.3 Travis CI 30
3.4.3.1 Job en Travis CI 32
3.5 Pruebas de calidad del codigo con SonarQube 33
4 Herramienta complementaria al proceso de integración continua 35
4.1 Servidor Linux 35
5 Análisis y evaluación sobre implementar Integración Continua 37
6 Conclusiones 43
7 Bibliografía 45
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
4
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
Resumen
El presente documento, se explica sobre las herramientas open source disponibles hoy
en día, para la integración continua en proyectos de desarrollo de software, donde se las
mencionan y describen las características de cada una de ellas para poder conocerlas y
tener un vistazo de ellas con respecto a otras.
5
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
Introducción
Además de que existen herramientas de integración de pago, también las hay las que
son open source (código abierto y que no tienen costo alguno), en el presente documento
nos enfocaremos más en las herramientas de open source, también cabe destacar, que
existen herramientas que tienen un doble propósito; el de integración continua y entrega
continua, que detallaremos más adelante.
Lo que se pretende alcanzar con esta monografía, es explicar un poco los conocimientos
adquiridos en el curso del diplomado, sobre las herramientas open source que
actualmente existen. apoyados de una estrategia o plan para llevar a cabo la aplicación
de estos conocimientos adquiridos en esta investigación.
6
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
1 Generalidades
La motivación para la elección de este tema de monografía (como parte final del
Diplomado Experto en Desarrollo de Aplicaciones Empresariales), viene determinada por
la inquietud profesional en el campo de la ingeniería y el mundo del desarrollo de software
en general, y también lo interesante que fue aprender una pequeña parte de lo que es y
conlleva la integración continua en proyectos de desarrollo de software.
También comentaremos sobre algunas herramientas open source que podríamos usar
para nuestros proyectos de desarrollo. Lo que nos permitirá automatizar las tareas que
son repetitivas (compilación, ejecución de pruebas, construcción, despliegue,
documentación), en proyectos de desarrollo de software.
“Práctica de desarrollo de software donde los miembros del equipo integran su trabajo
frecuentemente, al menos una vez al día. Cada integración se verifica con un build
automático (que incluye la ejecución de pruebas) para detectar errores de integración tan
pronto como sea posible” [1].
7
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
Fuente: Shahin, Mojtaba & Ali Babar, Muhammad & Zhu, Liming. (2017). Continuous
Integration, Delivery and Deployment: A Systematic Review on Approaches, Tools, Challenges
and Practices. Recuperado de: https://ieeexplore.ieee.org/document/7884954
También podríamos decir que la integración continua es una de las muchas prácticas o
enfoques que existen en proyectos de desarrollo de software ágil en la actualidad, donde
la integración continua a adoptado metodologías ágiles, para poder estar al nivel del
desarrollo ágil hoy en día. Donde cualquier cambio (o mejora) en el software se integra
rápidamente con el software destinado a producción, un pequeño ejemplo sería el
siguiente:
8
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
Fuente: Paul M.Duvall with Steve M. A. Glover. (2007). Continuous integration (Improving
Software Quality and Reducing Risk) p 15.
Hoy en día aun muchas empresas no han adoptado el enfoque de integración continua
debido a la costumbre de algo tradicional y muy conocido por muchos (enfoque ágil) pero
el desarrollo ágil no es suficiente para poder avanzar en proyectos grandes donde el
tiempo de desarrollo , testeo y entrega a producción tienen largos tiempos entre ellos, es
ahí donde la integración de todo, se vuelve un caos total debido a muchos inconvenientes
que puedan ser encontrados y podríamos decir que hasta podrían presentarse Issues
críticos en esa integración y el costo que esta pueda tener en tiempo y esfuerzo podrían
ser significativamente considerables.
Es por eso que en muchas de las empresas de desarrollo de software que adoptan
metodologías ágiles, en las cuales la integración continua y despliegue continuo cabe
como anillo al dedo, debido a lo que la integración/entrega continua representa, es una
forma de decir que lo que se implementa es de manera ágil y los cambios están sometidos
a testeos automatizados apenas sean terminados y que no toma mucho tiempo en la
espera de que estos sean testeados por equipos de QA (Quality Assurance).
Algunos beneficios o ventajas que nos propone la integración continua son las siguientes:
9
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
• Reduce el proceso repetitivo manual, lo que significa que libera de alguna manera
al equipo de DevOps de tareas monótonas y permite ser mas productivo al equipo de
desarrollo.
• Construye una base sólida, en el proyecto realizado.
• El tiempo de espera cortos, que permite ver si el código implementado presenta
algún defecto.
• Reduce los problemas de integración, permitiendo hacer entregas más rápidas.
Logra mayor auto-confianza y seguridad en el equipo de desarrollo, Jez Humble & David
Farley (2010) sostiene que “la experiencia demuestra que un equipo que utiliza
integración continua logra una mayor confianza interna, al estar comprobando
constantemente el estado del desarrollo. Y no es solamente la confianza en el equipo, es
también del entorno (usuarios, gestores, etc.) Un equipo de desarrollo de software que
se siente seguro es un equipo más motivado y más productivo”. [3]
2 Metodología
10
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
c) Un repositorio de artefactos que sirva para poder identificar las versiones liberadas y
en desarrollo, podrían ser Nexus.
Para este caso revisaremos 2 herramientas, que son Maven y Gradle, También podemos
mencionar que el uso de las mismas podría depender en cuestión de preferencias, según
conocimiento, experiencias o tipos de proyectos a los cuales aplicaremos estas
herramientas, para la gestión y construcción de proyectos Java (generación del build).
3.1.1 Maven
Maven esta definido por un archivo POM (Project Object Model), en el cual definimos las
librerías, dependencias y configuraciones que necesitemos para nuestro proyecto, de tal
forma que todo quede centralizado en ese archivo y mantengamos un orden en el código
(estructurado).
Podriamos decir que Maven simplifica el proceso de build del código, lo que nos permite
compilar cualquier tipo de proyecto Java, de la misma manera, librándonos de lo que
sucede por detrás.
Para llevar a cabo lo que mencionamos Maven cuenta con un ciclo del build que es el
siguiente:
12
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
3.1.2 Gradle
Al igual que Maven, Gradle cuenta también con un ciclo de vida del build, los cuales están
compuestos por tres fases, inicialización, configuración y ejecución, a continuación,
veremos que hace cada una de estas fases.
13
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
Un pequeño ejemplo sobre las fases del ciclo del build de Gradle lo vemos en el siguiente
ejemplo obtenido de la documentación de Gradle, descrita en la Figura 4.
14
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
¿Que es Git?
15
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
Git te permite y te anima a tener múltiples ramas locales que pueden ser totalmente
independientes entre sí. La creación, fusión y eliminación de esas líneas de desarrollo
lleva segundos.
Empresas y proyectos importantes que usan Git como servidor de versiones son:
¿Que es GitHub?
GitHub aloja tu repositorio de código y te brinda herramientas muy útiles para el trabajo
en equipo, dentro de un proyecto.
Además de que tu podrías contribuir haciendo alguna mejora en el software de los demás,
para esto github provee una serie de funcionalidades para hacer un fork y solicitar pulls,
Realizar un fork es simplemente clonar un repositorio ajeno (genera una copia en tu
cuenta).
¿Qué es GitLab?
GitLab es la primera aplicación individual construida desde cero para todas las etapas del
ciclo de vida de DevOps para equipos de Producto, Desarrollo, QA, Seguridad y
Operaciones para que trabajen simultáneamente en el mismo proyecto.
GitHub o GitLab son ahora las herramientas mas conocidas a nivel mundial y usadas
para muchos proyectos de diferentes magnitudes, desde proyectos sencillos hasta
proyectos muy complejos.
A continuación, podemos ver un pequeño gráfico (Figura 6) que nos muestra la capacidad
de compatibilidad de git y github, con varias herramientas de CI.
16
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
SERVIDOR DE VERSIONES
… OTROS
17
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
3.4.1 Jenkins
Jenkins hace énfasis en la integración continua, John Ferguson Smart (2011) sostiene
que “una buena infraestructura de Integración Continua puede agilizar el proceso de
desarrollo de tal forma que ayude a detectar y corregir errores más rápidamente,
proporcione un útil panel de proyectos para desarrolladores y no desarrolladores y en
última instancia, ayude a los equipos.
Entregar más valor comercial real al usuario final. Todo equipo de desarrollo profesional,
no importa cuán pequeño sea, debe practicar la Integración Continua”. [4]
John Ferguson Smart (2011) “define Jenkins, originalmente llamado Hudson, es una
herramienta de integración continua de código abierto escrita en Java. Con una
participación dominante, Jenkins es utilizado por equipos de todos los tamaños, para
proyectos en una amplia variedad de lenguajes y tecnologías, incluyendo .NET, Ruby,
Groovy, Grails PHP y más, así como Java. Entonces, ¿qué ha hecho de Jenkins un éxito?
¿Y por qué usar Jenkins para su infraestructura de CI?
En primer lugar, Jenkins es fácil de usar. La interfaz de usuario es simple, intuitiva y
visualmente atractiva, y Jenkins en general tiene una curva de aprendizaje muy baja.
Sin embargo, Jenkins no sacrifica el poder ni la extensibilidad: también es
extremadamente flexible y fácil de adaptar a sus propios propósitos. Existen cientos de
complementos que están disponibles, y cada semana salen más. Estos complementos
cubren todo, desde sistemas de control de versiones, herramientas de compilación,
métricas de calidad de código, notificador de compilación, integración con sistemas
externos, personalización de UI, juegos y mucho más. Y su instalación es rápida y fácil”.
[5]
Jenkins puede instalarse a través de paquetes de sistema nativos, Docker, o incluso
ejecutarse de manera independiente en cualquier máquina con un Java Runtime
Environment (JRE) instalado.
Algunas características más sobresalientes de Jenkins se describen a continuación:
o Herramienta de integración continua.
o Identifica las distintas tareas en (Jobs).
19
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
Algunas de las opciones que podríamos explotar más de Jenkins serían los Jobs, que en
lo personal creo que esto nos ahorra bastante tiempo cuando tenemos tareas
automatizadas, en el sentido de que solo debemos configurarlo e integrarlo con nuestro
proyecto para que se lleven a cabo dichas tareas de manera que estas se conviertan en
algo automático y repetitivo, liberando a DevOps de tareas y permitiendo hacer mas
productivo al equipo de desarrollo.
20
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
por ejemplo:
Para generar un build de un proyecto “X” se siguen algunos pasos previos, que sería
configurar nuestro servidor de integración (Jenkins en este caso), de tal manera que
cuando subamos cambios (cambio de código, que podría ser algún feature, fix o mejora
del código como refactorización), se active un Job encargado de procesar el commit
realizado en nuestro servidor de versiones (Git por ejemplo), que pueda capturar el
commit y además que pueda generar el build del proyecto.
3.4.2 GoCD
21
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
22
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
a) Server y Agents:
Donde podríamos traducirlo a (Agentes y Servidor), En el ecosistema de GoCD, el
servidor es el que controla todo. Proporciona la interfaz de usuario a los usuarios del
sistema y proporciona trabajo para los agentes. Los agentes son los que realizan
cualquier trabajo (ejecutar comandos, implementaciones, etc.) que configuren los
usuarios o administradores del sistema.
El servidor no realiza ningún "trabajo" especificado por el usuario por su cuenta. No
ejecutará ningún comando ni realizará implementaciones. Esa es la razón por la que
necesita un servidor GoCD y al menos un agente de GoCD instalado antes de continuar,
como podemos ver en la Figura 11.
Pipeline, una representación del flujo de trabajo o una parte de un flujo de trabajo. Por
ejemplo, si está intentando ejecutar pruebas automáticamente, crear un instalador y luego
implementar una aplicación en un entorno de prueba, esos pasos se pueden modelar
23
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
26
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
Paso 1: hacemos click en botón Add new Pipeline, luego nos mostrará los tabs
necesarios para configurar nuestro pipeline, don de ponemos el nombre de nuestro
pipeline y el grupo al que pertenecerá este (Figura 15).
27
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
Paso 3: En este punto debemos configurar el Job que estará asociada a la etapa que
definamos en este tab, donde podemos tener más de un Job o Task dentro esta etapa
como habíamos mencionado anteriormente.
Para tal propósito llenamos el nombre de la etapa, seguida del modo en que este
Jos/tarea se activara, para este ejemplo elegimos cuando se haga un commit satisfactorio
en nuestro repositorio, luego definimos el nombre de nuestro Job y el tipo de tarea que
este ejecutara y con eso sería suficiente para poder crearnos nuestro pipeline en Go CD,
ver Figura 17.
28
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
29
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
3.4.3 Travis CI
30
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
Christopher Weyand, Jonas Chronik, Lennard Wolf, Steffen Kötte, Konstantin Haase, Tim
Felgentreff, Jens Lincke y Robert Hirschfeld (2017), afirman que “Travis CI es un servicio
de integración continua alojado y estructurado como una arquitectura de microservicio.
Los componentes modulares, aunque mínimamente acoplados, son subsistemas
complejos corriendo en la nube, debido a la utilización de las librerías y software
entrelazadas y mecanismos sofisticados de programación, una comprensión exhaustiva
de la construcción del sistema no es trivial. Proporcionar la base para una evaluación de
la modularidad, extensibilidad y escalabilidad de la arquitectura.
Aunque Travis CI ofrece funcionalidad e implementación continuas completamente
funcionales para muchos lenguajes de programación y plataformas, todavía carece de
algunas características comunes a otras herramientas de CI. En particular, falta una
forma de hacer frente a las dependencias, así como una página web que presenta
información útil sobre el proyecto de software”. [8]
A continuación, podemos apreciar un vistazo de la arquitectura de Travis CI (Figura 20).
31
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
Fuente: Weyand Christopher, Chronik Jonas, Wolf Lennard, Kötte Steffen, Haase Konstantin,
Felgentreff Tim, Lincke Jens and Hirschfeld Robert (2017). Improving Hosted Continuous
Integration Services. Potsdam-Alemania, (p. 10).
Los Jobs en Travis CI al igual que en Jenkins y GoCD tiene la función de ejecutar o llevar
a cabo tareas configuradas previamente, pero en este caso la ejecución de los Jobs y
demás tareas que queramos ejecutarlos, para la integración continua, este se lo hace
mediante un archivo.travis.yml en cual definimos las tareas que queramos configurar y
ejecutar, por ejemplo, para crear nuestro build.
Si no tenemos presente este archivo en nuestro proyecto, por ejemplo, en nuestro
repositorio GitHub entonces cuando estemos en el UI de Travis CI podremos ver que
nada pasa mientras hagamos varios commits.
Un pequeño ejemplo del archivo sería el siguiente (Figura 21).
32
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
Algo que debemos tomar muy en cuenta es que un análisis estático del código no es y
no será suficiente para afirmar que nuestro software es de calidad, es por eso que
también necesitamos otro tipo de herramientas de apoyo, como los test unitarios u otros
33
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
para verificar el correcto uso y calidad de nuestro software, pero haciendo un análisis del
código sin estar en ejecución podemos detectar elementos como:
Detectar estos puntos mencionados con sonar son muy importantes para una empresa
de desarrollo de software ya que antes de que el código está ejecutado podemos
detectarlos e ir corrigiendo lo antes posible.
Los lenguajes soportados por SonarQube son bastantes como se muestran en la
siguiente imagen (Figura 23).
34
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
35
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
¿Que es Linux?
LINUX, es un sistema operativo que consiste en varios programas fundamentales que
necesita el ordenador para poder comunicar y recibir instrucciones de los usuarios; tales
como leer y escribir datos en el disco duro, cintas, e impresoras; controlar el uso de la
memoria; y ejecutar otros programas. La parte más importante de un sistema operativo
es el núcleo. En un sistema GNU/Linux, Linux es el núcleo. El resto del sistema consiste
en otros programas, muchos de los cuales fueron escritos por o para el proyecto GNU.
Dado que el núcleo de Linux en sí mismo no forma un sistema operativo funcional,
preferimos utilizar el término “GNU/Linux” para referirnos a los sistemas que la mayor
parte de las personas llaman de manera informal “Linux”.
Es un servidor impulsado por el sistema operativo de código abierto LINUX. Ofrece a las
empresas una opción de bajo costo para entregar contenido, aplicaciones y servicios a
sus clientes. Debido a que Linux es de código abierto, los usuarios también reciben
beneficios de una sólida comunidad de recursos y abogados.
Cada variedad de servidor Linux está diseñada teniendo en cuenta distintos usos:
Hasta este punto ya hemos visto de cómo se compone el proceso de integración continua,
además de las herramientas que se han revisado en este documento se necesitan a las
personas (encargados) de llevar a cabo la implementación de Integración Continua. Las
herramientas revisadas corresponden un 50 % de Integración continua en el sentido de
que están ahí, pero necesitamos actores que serían los que llevarían a cabo la
implementación y el uso de la misma, en si estos actores serian: developers, Devops,
QA, proyecto X, IT y factor económico e infraestructura.
Para llevar a cabo esta implementación (Integración Continua) podría variar, de acuerdo
a la magnitud del proyecto, por ejemplo, para una Startup o una empresa grande.
Para empezar a desarrollar el análisis primero describiremos que es una Startup, Blank,
Steven && Dorf Bob (2012) afirman que “es una organización temporal en busca de un
modelo de negocio escalable, repetitivo y rentable” [9]. Para una Startup se podría aplicar
Integración continua, es decir que implementar CI en una Startup marcaria diferencia con
respecto a otras Startups, y el costo a lo mucho talvez seria en el sentido del esfuerzo
que se aplicaría en la implementación de CI, ya que en el sentido económico seria barato
37
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
ya que podríamos empezar a usar herramientas open source o que en su defecto son
gratis, lo que escatimaría gastos, estas herramientas serian algunas que hemos
mencionado como Jenkins, Git, Maven, etc. Donde luego el proyecto lo podríamos alojar
en un servidor local, Linux por ejemplo o un servidor de características considerables en
la web para empezar y luego ir escalando incrementando las características del servidor
de acuerdo a lo que se vaya requiriendo como memoria RAM, procesadores, etc. Claro
que también dependería del factor económico disponible para invertir (ya que los
servidores en la nube tienen costo, si bien en un inicio muchos son free por un periodo
corto).
Por ejemplo, Kamatera ofrece las siguientes características, ver Figura 26.
38
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
En cambio para una Empresa Establecida (que tiene millones de clientes), podríamos
aplicar Integración Continua, pero los cuales si tendrían costes (que viendo el lado
positivo de esto, serian como una inversión), debido a que el resultado de esta
implementación seria a favor de la empresa y también para los clientes (indirectamente),
además de la mejora en el desarrollo y control de calidad, pero antes de llevar a cabo
esta implementación se debería realizar una evaluación y análisis del estado del producto
(proyecto) en cuestión que se esta desarrollando (o que ya estaría en producción), y la
viabilidad de poder aplicarlo. En resumen, se verían cuestiones de adaptación y por otro
lado el tema cultural, donde pueda que por esos dos factores la empresa evitaría aplicar
Integración Continua aun sabiendo las ventajas que esta brinda.
39
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
Los indicadores de mayor interés dependerán de los requisitos clave del proyecto.
Algunas métricas de código típicos incluyen:
• Pruebas Unitarias
• Complejidad
• Dependencia
• Longitud
Figura 27. Costo del bug respecto a la Fase del Proyecto Software.
Fuente: The cost to fix bugs can increase dramatically over time. Patton, R. (2005). Software
Testing (2nd ed.) (p-18).
40
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
Patton, R. (2005). Software Testing (2nd ed.) (p-18) afirman que “Un error encontrado y
corregido durante las primeras etapas cuando se escribe la especificación podría costar
casi nada, o $ 1 en nuestro ejemplo (Figura 27). El mismo error, si no se encuentra hasta
que el software esté codificado y probado, puede costar entre $ 10 y $ 100. Si un cliente
lo encuentra, el costo podría ser fácilmente de miles o incluso millones de dólares.” [10]
Está claro que las herramientas dependerán si la empresa actualmente ya está usando,
parte de los componentes de Integración Continua que mencionamos en el documento,
41
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
42
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
6 Conclusiones
Después de haber revisado las herramientas open source que tenemos disponibles, y en
cómo ellos nos podrían ayudar de gran manera en nuestros proyectos de desarrollo de
software, y que en lo personal más que una opción sería como herramientas importantes
en el área de desarrollo, que en Cochabamba dentro de poco estas herramientas serán
parte del proceso de desarrollo, y que podría ser implantado/aplicado por muchas
empresas de este rubro, debido a que es una forma más de poder decir que la integración
es ágil además de la metodología aplicada, por ejemplo Scrum.
Después de haber revisado las herramientas tales como Jenkins, GoCD y Travis CI,
podemos concluir os siguiente:
Jenkins:
• Jenkins es una herramienta muy conocida por una gran mayoría de
desarrolladores y personas del rubro del área de sistemas e informática.
• Existe documentación en la web, además de la documentación propia de Jenkins.
• Hay muchas incidencias sobre el manejo de esta herramienta.
• Fácil e intuitivo al momento de aprender a usar esta herramienta.
• Gran cantidad de plugins para configurar Jenkins de acuerdo a nuestras
necesidades y tipos de proyectos de software.
• Se integra con muchas otras herramientas alternativas y/o complementarias con
CI.
GoCD:
• Además de integración continua ofrece herramientas de entrega continua.
• Actualmente es usada por empresas importantes que la recomiendan.
• Configuraciones semejantes a las que ofrece Jenkins (como Jobs, Tasks,
pipelines, etc.).
• No existe muchas incidencias de empresas que lo apliquen en Bolivia u otras, si
bien es usada por empresas importantes en otros países.
Travis CI:
43
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
• Travis CI, si bien ofrece herramientas útiles para la integración continua, esta esta
mas pensada para funcionar como microservicio.
• No existe mucha documentación para poder empezar a usar esta herramienta
(primeros pasos).
• Al carecer de otras funcionalidades que ofrecen GoCD y Jenkins esta herramienta
la podríamos calificar con un 3, en un rango de 0-10 tomando en cuenta lo que ofrece y
las incidencias que existen sobre Jenkins y GoCD.
44
Herramientas Open Source para la Integración Continua, en Proyectos de Desarrollo de Software – Henry Bustamante C.
7 Bibliografía
[1] Fowler Martin. 01 de mayo de (2006). Continous Integration, Continuous Integration,
(consultado 28 de octubre de 2018). recuperado de:
https://martinfowler.com/articles/continuousIntegration.html
[2] Paul M.Duvall with Steve M. A. Glover (2007). Continuous integration (Improving
Software Quality and Reducing Risk). Delhi India, India: Pearson Education in South Asia
(p. 29-30).
[3] Jez Humble & David Farley (2010). Continuous Delivery. United States: Addison–
Wesley (p. 14 - 20)
[4] Ferguson S. John (2011). Jenkins: The Definive Guide (Continuous Integration for the
Mases). United States (p. 1).
[5] Ferguson S. John (2011). Jenkins: The Definive Guide (Continuous Integration for the
Mases). United States (p. 3).
[8] Weyand Christopher, Chronik Jonas, Wolf Lennard, Kötte Steffen, Haase Konstantin,
Felgentreff Tim, Lincke Jens and Hirschfeld Robert (2017). Improving Hosted Continuous
Integration Services. Potsdam-Alemania, (p. 1-3)
[9] Blank, Steven && Dorf Bob (2012), The Step-by-Step Guide for Building a Great
Company (Preface).
45