Jenkins es un servidor de automatización de código abierto que automatiza las tareas técnicas repetitivas relacionadas con la integración continua de software. Jenkins está basado en Java, y se instala desde los paquetes de AlmaLinux o descargando y ejecutando su archivo de aplicación web (WAR), una colección de archivos que conforman una aplicación web completa para ejecutar en un servidor.

En este tutorial instalaremos Jenkins en AlmaLinux 9.1, iniciaremos el servidor de desarrollo y crearemos un usuario administrativo para empezar a explorar la automatización de Jenkins.

Requisitos previos

Para seguir este tutorial necesitarás:

  • Un servidor con AlmaLinux 9.1 con acceso total con 1G de RAM como mínimo.
  • OpenJDK 11 instalado en el servidor.

Si necesitas instalar OpenJDK en el servidor puedes revisar este artículo que explica como hacerlo:

Cómo instalar Java con DNF en AlmaLinux 9.1
Java y la JVM (máquina virtual de Java) son necesarios para muchos tipos de software, como Tomcat, Jetty, Glassfish, Cassandra o Jenkins.

Instalación de Jenkins

La versión de Jenkins incluida en los paquetes por defecto de AlmaLinux suele estar por detrás de la última versión disponible del propio proyecto. Para asegurarse de que tiene las últimas correcciones y características, utilizaremos los paquetes mantenidos por el proyecto para instalar Jenkins.

Añadimos los repositorios y actualizamos:

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

Instalamos el paquete desde DNF:

dnf install jenkins

Una vez instalado, iniciamos el servicio y lo habilitamos al arranque del servidor:

systemctl start jenkins.service
systemctl enable jenkins.service

Revisamos el estado del servicio:

# systemctl enable jenkins.service
Created symlink /etc/systemd/system/multi-user.target.wants/jenkins.service → /usr/lib/systemd/system/jenkins.service.
[root@docker ~]# systemctl status jenkins.service
● jenkins.service - Jenkins Continuous Integration Server
     Loaded: loaded (/usr/lib/systemd/system/jenkins.service; enabled; vendor preset: disabled)
     Active: active (running) since Thu 2023-03-16 19:06:52 CET; 33s ago
   Main PID: 23059 (java)
      Tasks: 45 (limit: 12329)
     Memory: 349.1M
        CPU: 41.639s
     CGroup: /system.slice/jenkins.service
             └─23059 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=>
📢
Ten en cuenta que Jenkins se ejecuta escuchando el puerto 8080, por lo que deberás de abrir ese puerto en el Firewall de tu servidor.

Configuramos Jenkins

Tras la instalación de Jenkins, lo que haremos será acceder mediante el navegador utilizando la IP Pública del servidor y el puerto 8080.

Primer paso para configurar Jenkins

Tendremos que mostrar el fichero que nos indican para encontrar la contraseña para desbloquear Jenkins:

# cat /var/lib/jenkins/secrets/initialAdminPassword
e59e42674fa54ba9aa9a5914c8XXXXX

La siguiente pantalla nos indicará si instalar los plugins por defecto o seleccionar los plugins manualmente. Recomiendo marcar la primera opción.

Marcamos la opción "Install suggested plugins"

Al hacer clic sobre esa opción iniciará la instalación de plugins:

Una vez finalice la instalación, deberemos de crear la cuenta administradora.

Creamos usuario admin

A continuación, podemos seleccionar la URL de acceso:

En este apartado podemos dejar la IP de nuestro servidor y luego configurar un Nginx Proxy para acceder vía dominio.

Al acabar, ya podremos acceder:

Securizar Jenkins

Para añadir un SSL a Jenkins es necesario configurar un Nginx Proxy al puerto 8080. De esta forma podremos acceder mediante un nombre de dominio y SSL.

Para hacerlo, recuerda que puedes seguir estas otras instrucciones:

Configurar Proxy Inverso con Nginx para que escuche a un puerto interno
En ocasiones tenemos servicios o aplicaciones web que escuchan directamente a un puerto interno. Para evitar acceder a dicha aplicación o servicio por la IP del servidor, una configuración que podemos hacer es acceder desde un Nginx Proxy.

Configurar Jenkins para acceder con dominio

Ahora que tenemos configurado Nginx para que escuche en 127.0.0.1:8080, deberemos de indicar en la configuración de Jenkins que responda internamente por ese puerto.

Para ello editaremos el fichero de configuración del servicio /lib/systemd/system/jenkins.service y descomentaremos la siguiente línea y añadiremos la IP 127.0.0.1:

Environment="JENKINS_LISTEN_ADDRESS=127.0.0.1"

Guardamos y salimos.

Tocará reiniciar Jenkins para que cargue la nueva configuración:

systemctl restart jenkins

Si revisamos el status del servicio, veremos que esta vez se lanza con un parámetro llamado --httpListenAddress:

# systemctl status jenkins
● jenkins.service - Jenkins Continuous Integration Server
     Loaded: loaded (/lib/systemd/system/jenkins.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2022-08-24 17:11:21 UTC; 5s ago
   Main PID: 32982 (java)
      Tasks: 48 (limit: 4626)
     Memory: 352.2M
        CPU: 12.330s
     CGroup: /system.slice/jenkins.service
             └─32982 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8080 --httpListenAddress=127.0.0.1
--httpListenAddress=127.0.0.1

Una vez podemos acceder por dominio y SSL, es recomendable modificar la contraseña de admin ya que la contraseña la hicimos sin SSL y no es seguro.

Y listo, ya tienes instalado Jenkins en tu servidor! En próximos tutoriales veremos como crear tareas y configurar algún plugin.

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación