User Tools

Site Tools


apuntes:jenkins

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
apuntes:jenkins [2021/03/07 13:21] – [Caso práctico: Construir un proyecto con Jenkins] Santiago Faciapuntes:jenkins [2021/03/10 13:44] (current) – [¿Qué es la integración continua?] Santiago Faci
Line 2: Line 2:
  
 ===== ¿Qué es la integración continua? ===== ===== ¿Qué es la integración continua? =====
 +
 +[[https://es.wikipedia.org/wiki/Integraci%C3%B3n_continua|Integración continua]] es una buena práctica en el desarrollo de software por la que se realizan integraciones automáticas en un proyecto lo más a menudo posible (gracias a que son automáticas) para tratar de encontrar errores y problemas lo antes posible.
 +
 +Este proceso de integración puede incluir la compilación, ejecución de pruebas (JUnit) y también en análisis de código con herramientas como [[https://entornos-desarrollo.codeandcoke.com/apuntes:calidad#calidad_del_codigo|SonarQube]].
 +
 +En nuestro caso utilizaremos la herramienta Jenkins para realizar esas integraciones. Esto nos permite, cada cierto tiempo o tras determinadas acciones (subir un cambio en el código, fusionar una rama, . . .) lanzar automáticamente la compilación, pruebas y revisión del código del proyecto. Jenkins permite que todo esto ocurra sin necesidad de que tengamos que estar pendientes. Lo único que necesitamos es haber puesto en marcha la herramienta, configurarla y registrar las tareas que queremos que se lleven a cabo con cada proyecto. Es lo que aprenderemos a hacer en este tema.
 +
 +<figure>
 +{{ ci.png?500 }}
 +<caption>Integración continua con Jenkins ((https://neftali.clubdelphi.com))</caption>
 +</figure>
 +
 +Es un concepto muy relacionado con la [[https://es.wikipedia.org/wiki/Entrega_continua|Entrega continua]], por la que se hacen entregas de software cada poco tiempo. Los mismos automatismos que permiten la integración continua también hacen posible la entrega continua. Con herramientas como Jenkins también podemos acabar empaquetando y desplegando (poniendo en marcha) la aplicación como última fase del proceso (si todas las demás fueron bien) por lo que en cada ciclo podemos tener una versión de la aplicación lista para usar.
 +
 +Cuando unimos estos dos conceptos se habla también de [[https://es.wikipedia.org/wiki/CI/CD|Despliegue continuo]], al que es habitual referirse por las siglas CI/CD (Continuos Integration/Continuos Delivery en inglés).
 +
 +<figure>
 +{{ cicd.png }}
 +<caption>CI/CD con Jenkins ((https://aws.amazon.com))</caption>
 +</figure>
  
 ===== ¿Qué es Jenkins ===== ===== ¿Qué es Jenkins =====
 +
 +[[https://www.jenkins.io/|Jenkins]] es un servidor de automatización que permite la puesta en marcha de prácticas de integración y entrega continua que hemos comentado anteriormente.
  
 <figure> <figure>
Line 22: Line 44:
 </figure> </figure>
  
-{{ youtube> }}\\+{{ youtube>s4QB1pfMtyY }}\\
  
 ===== Configurar Jenkins para utilizar Java, Git y Maven ===== ===== Configurar Jenkins para utilizar Java, Git y Maven =====
  
 +Como primer paso tras la puesta en marcha de Jenkins, vamos a configurar las herramientas extenas que éste tendrá que utilizar para realizar sus funciones. 
 +
 +Tendremos que indicarle que JDK utilizar para la compilación de nuestros proyectos, donde está Git para que pueda hacerse con el código de éstos directamente del repositorio de GitHub donde los alojaremos, y también dónde está la herramienta Maven para que sea capaz de construir nuestros proyectos de la misma forma en la que lo hacemos nosotros.
  
-===== Crear y ejecutar jobs en Jenkins =====+{{ youtube>X_EJkfkNW7E }}\\ 
 +===== Crear y lanzar jobs en Jenkins =====
  
 +Y una vez que tenemos la herramienta puesta en marcha y configurada, podemos crear el primer Job para que Jenkins pueda compilar un proyecto cuyo código tenemos alojado en un repositorio de GitHub.
  
 +{{ youtube>r3VB3Hqip1I }}\\
  
  
apuntes/jenkins.1615123276.txt.gz · Last modified: 2021/03/07 13:21 by Santiago Faci