CD-CI: Instalar Jenkins en Centos LXC
Hoy os vamos a explicar como instalar Jenkins en un contenedor LXC Centos de Proxmox.
Antes de hacerlo vamos a hablar de CD/CI y de Jenkins.
¿Qué es CD/CI?
Por una parte, CD/CI, es un método que se centra en los ciclos de vida definidos para todo software, usando como base las herramientas de automatización. Permite gestionar todas las etapas de la implementación del software, desde las pruebas hasta la distribución e implementación.
- CI se definiría como Continuos Integration o Integración Continua:
- La “CI” en CI/CD siempre se refiere a la integración continua, que es un proceso de automatización para los desarrolladores. Si la CI tiene éxito, los cambios del código nuevo en una aplicación se diseñan, se prueban y se combinan periódicamente en un repositorio compartido. Esto soluciona el problema de que se desarrollen demasiadas versiones de una aplicación al mismo tiempo, porque podrían entrar en conflicto entre sí.
- CD se definiría como Continuos Delivery o Entrega Continua:
- La “CD” en CI/CD se refiere a la distribución o la implementación continua, los cuales son conceptos relacionados que suelen usarse indistintamente. Ambos conceptos se refieren a la automatización de las etapas posteriores del canal, pero a veces se usan por separado para explicar la cantidad de automatización que se está incorporando.
¿Qué es Jenkins?
Por otra parte, Jenkins es un servidor de automatización Open Source creado en Java. Mediante plugins, es capaz de conectar con diferentes plataformas de desarrollo como Git, Subversion,…que permite extender sus funcionalidades.
Lo que conseguimos es integrar en una máquina, un motor para automatizar las tareas en gran parte del flujo de trabajo de un proyecto, por lo que resulta especialmente útil en los equipos técnicos que quieren agilizar las tareas de desarrollo de cara a los procesos de integración continua.
Tareas que podremos hacer a través de Jenkins:
- Tests de diferente software
- Trabajar con métricas de calidad del software para validarlo
- Validar y enviar modificaciones al repositorio principal
- Automatizar la compilación o despliegue del software
- Notificar al equipo de desarrollo ante errores en las validaciones
- Generar o visualizar la documentación de un proyecto
Instalación Jenkins en Centos LXC
Como hemos explicado brevemente en qué consiste CD/CI y Jenkins, vamos a instalar sobre un contenedor LXC de Proxmox el motor de automatización Jenkins.
Pre-requisitos Jenkins
Mínimo hardware requerido:
- 256 MB de RAM
- 1 GB de disco (instalado en Docker, aunque 10GB mínimo es lo recomendado)
Recomendado para un equipo pequeño de desarrollo:
- 1 GB+ de RAM
- 50 GB+ de disco
Software requirimiento:
- Java
- Navegador web
Instalar Jenkins
Le daré 2vCPUs, 2GB RAM y 50GB de disco.
Los comandos de instalación serían:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[root@JENKINS ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --2020-10-26 21:35:51-- https://pkg.jenkins.io/redhat-stable/jenkins.repo Resolving pkg.jenkins.io (pkg.jenkins.io)... 151.101.2.133, 151.101.66.133, 151.101.130.133, ... Connecting to pkg.jenkins.io (pkg.jenkins.io)|151.101.2.133|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 85 Saving to: '/etc/yum.repos.d/jenkins.repo' 100%[==============================================================>] 85 --.-K/s in 0s 2020-10-26 21:35:51 (8.84 MB/s) - '/etc/yum.repos.d/jenkins.repo' saved [85/85] [root@JENKINS ~]# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key [root@JENKINS ~]# yum upgrade [root@JENKINS ~]# yum install jenkins java-1.8.0-openjdk-devel [root@JENKINS ~]# systemctl daemon-reload |
Una vez instalado, habilitamos el servicio:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[root@JENKINS ~]# systemctl start jenkins [root@JENKINS ~]# systemctl status jenkins ● jenkins.service - LSB: Jenkins Automation Server Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled) Active: active (running) since Mon 2020-10-26 21:47:12 UTC; 5s ago Docs: man:systemd-sysv-generator(8) Process: 2818 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=0/SUCCESS) CGroup: /system.slice/jenkins.service └─2840 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -... Oct 26 21:47:11 JENKINS systemd[1]: Starting LSB: Jenkins Automation Server... Oct 26 21:47:11 JENKINS runuser[2824]: pam_unix(runuser:session): session opened for user jenkins...d=0) Oct 26 21:47:12 JENKINS runuser[2824]: pam_unix(runuser:session): session closed for user jenkins Oct 26 21:47:12 JENKINS jenkins[2818]: Starting Jenkins [ OK ] Oct 26 21:47:12 JENKINS systemd[1]: Started LSB: Jenkins Automation Server. Hint: Some lines were ellipsized, use -l to show in full. |
Habilitamos para que auto-arranque:
1 2 3 |
[root@JENKINS ~]# systemctl enable jenkins jenkins.service is not a native service, redirecting to /sbin/chkconfig. Executing /sbin/chkconfig jenkins on |
Una vez arrancado, el puerto por defecto es el 8080. Iremos a la URL en ese puerto. Nos dice el mensaje que introduzcamos la contraseña que se encuentra en un fichero que tenemos que consultar:
Lo listamos:
1 2 |
[root@JENKINS ~]# cat /var/lib/jenkins/secrets/initialAdminPassword 46868955dee64049941876db26941080 |
Nos permitirá una vez introducida instalar plugins:
Instalo los sugeridos:
Y generamos un administrador para la plataforma:
Y ya tenemos acceso…seguiremos investigando:
¿Te ha gustado la entrada SÍGUENOS EN TWITTER?
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?
Un comentario
Pingback: DevOps: Integración continua y Pipeline - Blog Virtualizacion