Segunda Entrega
INTEGRACION CONTINUA
PRESENTA:
INGRID KATHERINE BOHORQUEZ FORERO Código: 1711025620
WILMAR DANIEL ZAPATA JIMENEZ Código: 1721021035
HARLEY ANTONIO GÓMEZ VALENCIA Código 171102641
MATERIA INTEGRACION CONTINUA
INSTITUCIÓN UNIVERSITARIA POLITECNICO GRANCOLOMBIANO
FACULTAD DE INGENIERIA
INGENIERIA DE SOFTWARE
JUNIO
2020
Contenido
1. INTRODUCCION ........................................................................................................................... 3
2. Detalle de las Ramas Dentro del Caso Estudio ............................................................................ 3
3. Arquitectura y Modularidad del Proyecto .................................................................................. 4
4. Integración con Jenkins ............................................................................................................... 6
5. Enlaces Videos Generados por el equipo. ................................................................................... 9
6. Conclusiones.............................................................................................................................. 11
INGENIERIA DE SOFTWARE 2
1. INTRODUCCION
Muchas organizaciones se ven beneficiadas al adoptar la integración y la entrega continua,
conocidas como CI/CD, como un elemento para darle agilidad, velocidad y mayo calidad al
software, con la integración y la entrega continua tenemos las siguiente ventajas:
a. Entrega de codigo mas rápidamente
b. Menor esfuerzo
c. Mayor Confianza al momento de desplegar el código en la etapa de producción
d. Facilidad en la adapctacion al equipo y comunicación entre los desarrolladores
e. Mayor visibilidad en el codigo que se esta desarrollando
f. Identificación de errores prematuramente antes de publicar el codigo
Dentro de las actividades de este proyecto de clase hemos definido muy claramente las
acciones, responsabilidades y las funciones de cada uno de los miembros del equipo con el fin
de que sea beneficioso los procesos que en el proyecto de aula se desarrollen.
Con la integración continua los desarrolladores pueden integrar código a la rama principal de
un repositorio común, en lugar de desarrollar Código de manera aislada, la integración continua
reduce costos y tiempos en la integración de Código y permite encontrar conflictos entre el
código nuevo y el existente en el momento que se este haciendo la integración.
La integración continua en cambio es una extensión de la integración continua que permite
desplegar Código de manera continua y frecuentemente, los equipos continúan con las tareas
normales con la confianza de enviar un paso a producción de manera confiable sin tener que
seguir pasos de manuales ejecutados por un especialista.
2. Detalle de las Ramas Dentro del Caso Estudio
El Proyecto estamos realizando un total de 5 ramas
Master: Wilmar Daniel Zapata Jimenez es el encargado de unificar las diferentes ramas
MenuPrincipal: esta rama es publicara para los miembros, pues en esta cada persona
incluye el módulo correspondiente
DespliegueContinuo: En esta rama está enfocado a explicar de qué trata el tema de los
despliegues continuos, El integrante Harley Gómez es el encargado de dicha funcionalidad
INGENIERIA DE SOFTWARE 3
EntregaContinua: En esta rama encargada por Katherin Bohórquez integra la funcionalidad
y explicación teórica de las entregas continuas
IntegracionContinua: La rama consiste en aplicar teóricamente el concepto de la
integración continua , esta funcionalidad es desarrollada por Wilmar Zapata Jimenez
Por medio de esta imagen vemos la cantidad de ramas y su propietario:
3. Arquitectura y Modularidad del Proyecto
Anteriormente en la primera entrega habíamos mencionado a profundidad sobre esta
arquitectura propuesta
INGENIERIA DE SOFTWARE 4
Ahora explicaremos a profundidad de como va hacer la modularidad de nuestra arquitectura
INGENIERIA DE SOFTWARE 5
Analizando esta arquitectura vemos el modularidad que se está manejando, La App con tiene
varios Módulos y cada Módulo contiene componentes exclusivos de ella, ejemplo:
El Módulo Integración continua se compone de dos carpetas (Componentes y Service) adicional
a eso tiene tos archivos terminado –routing y module.
Con los dos archivos mencionados anteriormente se conecta a una ruta y a un módulo principal
que será cargada una vez el usuario entre a ese módulo, así evitamos sobre cargas y cargas
innecesarias que el usuario no desee ver, técnicamente se llamada (LAZY LOADING)
En la carpeta de componentes vemos que está conformada por archivos de lógica, renderizado
visual y clases de cascadas de estilos.
También visualizamos la carpeta llamada service, esta contiene la lógica que conectará con otros
servicios, ya sea api u otras conexiones que ese módulo requiera
Así culminamos la explicación técnica de como manejamos nuestro modularidad de la
arquitectura propuesta.
4. Integración con Jenkins
El objetivo de esta entrega se basa en acoplar Jenkins con nuestro proyecto que está alojado en
Github , pero claramente este grupo fue un poco más allá de lo que se tiene en cuenta en esta
entrega
Lo primero que se aplico fue descargar la imagen de Jenkins en nuestro Docker y posteriormente
a instalarla.
Una vez configurada Jenkins en nuestro equipo.
INGENIERIA DE SOFTWARE 6
Configuramos el JOB y lo enlazamos con nuestro repositorio en GitHub
INGENIERIA DE SOFTWARE 7
Procedemos a configurar nuestro Webhooks para enlazarlo con Jenkins
Técnicamente estamos integrando el puerto local donde está ubicado Jenkins con los
repositorios agregados, para que cuando haya un tipo de cambios o un nuevo commit se
actualice de forma automatizada el job que teníamos ya agregado
Independientemente del resultado que haya obtenido el Jobs con el nuevo commit, se le enviará
un correo electrónico a los propietarios de la RAM.
INGENIERIA DE SOFTWARE 8
En esta imagen podemos observar el correo que llega al personal cuando es satisfactoria
También nos llegará un correo informando en caso que el estado del Jobs pase a failed ,
notificando donde se produjo el error
5. Enlaces Videos Generados por el equipo.
Ver video de la integración entre Jenkins y github, notificación al desarrollador informando el
estado del job :
INGENIERIA DE SOFTWARE 9
LINK [Link]
Repositorio del proyecto que se lleva haciendo en el módulo y participantes:
[Link]
INGENIERIA DE SOFTWARE 10
6. Conclusiones
En estas semanas de trabajo pudimos evidenciar las grandes ventajas de implementar
integración continua en el trabajo de desarrollo de software, entre ellas destacamos:
• Ayuda a mejorar en gran cantidad la calidad del código
• Nos permite detectar errores de manera más rápida y fácil
• Permite reducir las tareas repetitivas y manuales en el grupo de trabajo
Se pueden crear versiones de prueba en cualquier momento en base a la rama principal del
proyecto.
El uso de la integración continua puede hacerse de manera manual, sin necesidad de hacer uso
de ninguna herramienta, pero esto implicaría mucho tiempo y trabajo extra que puede
convertirse un poco tedioso. Apoyándonos en ciertas herramientas podemos optimizar de
manera más fácil de nuestro trabajo. Algunas son Jenkins, Travis, Git, Github, GitLab, Docker,
Codeship entre otros, basándonos en las herramientas que usamos en estas semanas de trabajo
GitHub y Docker son herramientas que, de la mano nos permiten realizar el versiona miento de
código para así tener todo el control de los cambios que se están realizando en el software.
INGENIERIA DE SOFTWARE 11