Actividad 2 semana 5: Herramienta para integración continua (Jenkins)
Presentado por:
Lukas Dariam Zúñiga Perdomo cod: 2011020214
Cristian Camilo Quiroga Ortiz cod: 100251072
Briam David Leyton López cod:1721021029
Jorge Alberto Perea Charris cod: 1811020747
Manuel Gabriel Gomez Mogollon cod: 1721025772
Tutor:
Natalia Martinez
Politécnico Grancolombiano
Integración Continua
15 de junio de 2021
Contenido
¿Cómo integra Jenkins como un gestor de operaciones? ....................................................... 2
¿Qué es un gestor de operaciones? ......................................................................................... 3
Pasos para implementar Jenkins ............................................................................................. 4
Referencias ........................................................................................................................... 13
¿Cómo integra Jenkins como un gestor de operaciones?
Jenkins es una aplicación de automatización completa para el proceso de desarrollo de
software, por lo cual este software nos permite tener controlado, de forma automática, el
despliegue de la producción de un proyecto de desarrollo, nos permite controlar procesos
sin estar pendiente de ellos, actualización de entornos, revisión de calidad del código y
testeo de estos mismos, esto nos indica que nos permite tener actualizados los productos de
entrega al cliente solicitar uno en un momento cualquiera, lo que este software nos podría
permitir garantizar a nuestro cliente un producto funcional y listo para ser revisado y
encontrar posibles mejoras cada vez que sea requerido por ellos.
Jenkins como software de este tipo, nos permite ser un gestor de operaciones por medio de
plugin que nos permiten encapsular y extender su funcionalidad según nuestra necesidad
de gestión de operaciones, ya que Jenkins cuenta con una comunidad bastante extensa,
donde cualquier persona de ella puede desarrollar una nueva funcionalidad a través de un
plugin, estos módulos le permiten a Jenkins encargarse de cualquier tarea para la que se
haya programado, lo que nos da la posibilidad de utilizar cualquier plugin para nuestro
requerimiento.
Lo que realiza Jenkins como gestor de operaciones es hacer builds del software del
proyecto periódicamente y comprobar que funcionen correctamente, para conseguir un
producto final más fiable, con menos fallos en producción. Con Jenkins sabes qué funciona,
qué no y qué errores hay, también nos sirve para monitorizar la calidad del código que
escribimos con nuestro equipo y realiza las respectivas pruebas.
¿Qué es un gestor de operaciones?
Comúnmente el término se conoce como un rol dentro de una empresa. La gestión de
operaciones se conoce principalmente por encargarse de encontrar la manera mas eficiente
en calidad y costos para brindar productos y servicios dentro de una empresa, esto se logra
mediante un gestor de operaciones que se encarga de la logística en cuanto a la supervisión
y acompañamiento de los distintos procesos que se llevan a cabo para la fabricación del
producto final.
El gestor de operaciones suele encargarse de verificar entregas de productos o prestaciones
de servicio, también, como se menciona anteriormente revisa cada procesos que se hace
para así recolectar la información necesaria y analizar todo de manera que se puedan
planificar estrategias, cambios o reestructuraciones completas acerca del qué y cómo se
hace algo para optimizar al máximo los recursos que se tienen disponibles, aumentar la
calidad y también la eficiencia con esto se lograría tener mas ventas, por lo tanto más
ganancias.
Pasos para implementar Jenkins
Jenkins es un servidor de integración continua, gratuito, open source y actualmente uno de
los más empleados para esta función. La base de Jenkins son las tareas, donde indicamos qué
es lo que hay que hacer en un build o comppilado. Por ejemplo, podríamos ejecutar una tarea
en la que se compruebe el repositorio de control de versiones por lapso de tiempo y cuando
un desarrollador quiera subir su código al control de versiones, este se compile y se ejecuten
las pruebas.
Si el resultado no es el esperado o hay algún error, Jenkins notificará al desarrollador, al
equipo de QA, por email o cualquier otro medio, para que lo solucione. Si el build es correcto,
podremos indicar a Jenkins que intente integrar el código y subirlo al repositorio de control
de versiones.
Para el presente ejercicio instalaremos Jenkins en un sistema operativo iOS, iniciamos
abriendo una terminal y teclenado el comando $ brew install jenkins-lts
Ilustración 1 - Comandos para intalar Jenkins
Una vez ejecutado, verificamos que version de Jenkins fue instalada en nuestra maquina
mediante el comando $ jenkins-lts –version, en el presente ejercicio instalamos al ultima
version disponible la 2.289.1
Ilustración 2 - Version instalada del Jenkins
Porteriormente y ya instalado, comprobada la instalacion del Jenkins procedemos a subir el
servicio mediante el comando $ brew services start jenkins-lts, esto permitira iniciar las
librerias necesarias para en uso de dicho programa.
Ilustración 3 - inicializando Jenkins
Iniciado el servicio, nos dirigimos al navegador en la url teclaemos el localhost de nuestroa
maquina apuntando hacia el puerto 8080. El servicio de Jenkins corre por defecto en este
ultimo puerto.
Ilustración 4 - pagina inicio Jenkins
En la pagina de inicio, tenemos que introducir la contraseña que Jenkins nos asigna por
defecto, para esto nos dirigimos a un directorio en particular, el directorio /secrets en el
cual se encuentra el archivo initialAdminPassword, este ultimo contiene la contraseña que
genera jenkins por defecto al usuario Admin.
Ilustración 5 - Directorio donde se encuentra el password
Ilustración 6 - apertura del archivo initialAdminPassword
En este momento debemos estar dentro de Jenkins, listo para usar, por defecto antedicho
herramienta inicia en el panel de control en blanco, es decir sin ninguna tarea asignada, asi
como personas cargadas.
Ilustración 7 - Dashboard Jenkins
Pasos para el despliegue
Configuración Jenkins
Hemos accedido a la opción “Credentials” y seleccionamos la credencial
principal “System” seguida de la opción “Global credentials” aquí crearemos una nueva
credencial.
También necesitamos una cuenta de docker la cual creamos en este link, la cual
necesitamos para almacenar nuestra imagen en un repositorio.
Te recomendamos usar el ID dockerhub dentro de tu credencial, para que puedas
identificarla y referenciarla de manera más sencilla.
Creamos un repositorio dentro de nuestro dockerhub el cual utilizaremos mas adelante.
Configuración pipeline
Por último entramos a la sección del script del pipeline
Dentro de las variables de entorno hemos agregado dos más, correspondientes al repositorio
de docker hub que previamente creamos y al ID de las credenciales:
environment {
PRAGMA_USER = "leyton"
PROJECT_ROOT = "practicaIntegracionContinua"
EMAIL_ADDRESS = "brleyton@[Link]"
REGISTRY = "leyton/devops"
REGISTRY_CREDENTIAL = "dockerhub"
}
. Ahora agregamos el nuevo stage, justo posteriormente al stage scan
stage("build-image"){
steps{
sh "docker build -t ${REGISTRY}:${BUILD_NUMBER} ."
}
}
Por último hicimos clic en Apply y finalmente en Guardar.
Ahora, al ejecutar el pipeline tendremos la nueva etapa, accedemos al log para validar la
creación de la imagen
Validamos la creación la creación de la imagen con el comando docker images desde la
consola de la máquina.
Stage: Deploy
Para finalizar hemos agregado una última etapa a nuestro pipeline
stage("deploy") {
steps {
sh "docker run -p 8090:8090 ${REGISTRY}:${BUILD_NUMBER}"
}docker
}
Construimos el pipeline con este último cambio, en la consola se ve la imagen de docker
corriendo para hacer nuestro seguimiento.
Características necesarias para implementar Jenkins
Jenkins corre en entornos web de forma local y/o remota en un servidor web de la
propiedad de la organización que lo quiera implementar, cabe resaltar que es neesario tener
unos requerimientos bases como son:
Java 8
4gb de RAM (como minimo)
500 gb almacenamiento
Esto requerimientos dependen para que se quiere implementar y que se quiere tener
planeado hacer con Jenkins, es indispensable adaptar la maquina donde va a correr acuerdo
el numero de usuarios que va a interactuar con el software, lo mas importante es contar con
un buen ancho de banda para su normal funcionamiento.
Jenkins por ser una herramienta indispensable para la mejora continua e integracion, unos
de sus plugins estrellas es docker, por eso es indispensable contar con una cuenta en dicha
plataforma, para poder hacer una excelente destresa del mismo.
Conclusiones
Durante el desarrollo de la investigación se descubre la gran utilidad de la herramienta
Jenkins que nos da la posibilidad asegurar un mínimo de calidad de nuestros proyectos. Es
una excelente herramienta para ser utilizada en empresas con grandes equipos de trabajo o
si se trabaja con un equipo pequeño, ya que igual y en cualquiera de los dos casos se
necesita de la implementación de la integración continua ayudando a acelelar el proceso de
pruebas y compilación del proyecto aparte de que acompaña la gestión en todas la fases de
desarrollo del proyecto y de asegura ese mínimo de calidad mencionado anteriormente
también le brinda una mayor eficiencia al desarrollo optimizando el tiempo automatizando
varios procesos complejos. pueden ser consideradas herramientas como Jira (Por Atassian),
GitLab(Por GitLab) o AppCircle( Por SmartFace) que tienen un desempeño similar a
Jenkins.
Referencias
Bonnie, E. (2017, 24 marzo). Introducción a la gestión de operaciones. wrike.
[Link]
Conceptos de gestión de operaciones aplicado empresas de desarrollo de software. (2011,
11 noviembre). Gestión de operaciones en Desarrollo de Software.
[Link]
operaciones-aplicado-al-empresas-desarrollo-de-software/
J. (2014, 9 mayo). ¿Qué es Jenkins? Explicado en menos de 10 min para quienes no lo
conocen de nada. Javier Garzas.
[Link]
Royo, D. (2020, 15 septiembre). Jenkins: Cómo automatizar tareas, despliegues y testing.
Blog de Hiberus Tecnología. [Link]
como-automatizar-tareas-despliegues-testing/