====== Integración continua con Node.js. Jenkins ====== ===== ¿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:sonarqube-nodejs|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.
{{ ci.png?500 }} Integración continua con Jenkins ((https://neftali.clubdelphi.com))
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).
{{ cicd.png }} CI/CD con Jenkins ((https://aws.amazon.com))
===== ¿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.
{{ jenkins.png?300 }}
===== Instalación de Jenkins ===== Para comenzar a trabajar con [[https://www.jenkins.io/|Jenkins]] primero debemos contar con la herramienta instalada. Es una aplicación web que debe ser instalada en alguna máquina dentro de la red de forma que todos los desarrolladores tengan acceso a ella. La instalación puede ser un tanto complicada e innecesaria pudiendo disponer de una imagen docker con la ponerla en marcha. TODO
{{ jenkins-vm.png }} Máquina virtual de Bitnami con Jenkins
===== Configurar Jenkins para utilizarlo con Nodejs y Git ===== 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. TODO ===== 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. TODO ---- (c) 2024 Santiago Faci