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 Ubuntu 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 Ubuntu 22.04, 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 Ubuntu 22.04 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 APT en Ubuntu 22.04
Java y la JVM (máquina virtual de Java) son necesarios para muchos tipos de software, como Tomcat, Jetty, Glassfish, Cassandra o Jenkins. En este tutorial, instalaremos varias versiones de Java Runtime Environment (JRE) y Java Developer Kit (JDK) usando APT.

Instalación de Jenkins

La versión de Jenkins incluida en los paquetes por defecto de Ubuntu 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.

Primero, añadimos la clave del repositorio:

wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key |sudo gpg --dearmor -o /usr/share/keyrings/jenkins.gpg

Añadimos los repositorios y actualizamos:

sudo sh -c 'echo deb [signed-by=/usr/share/keyrings/jenkins.gpg] http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'

Instalamos el paquete desde APT:

apt 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 status jenkins.service
● 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 15:11:57 UTC; 18s ago
   Main PID: 30905 (java)
      Tasks: 48 (limit: 4626)
     Memory: 1.2G
        CPU: 38.248s
     CGroup: /system.slice/jenkins.service
             └─30905 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8080
📢
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 via 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