Cómo instalar Jenkins en Rocky Linux 9
Jenkins es una herramienta de automatización de código abierto para la Integración Continua/Entrega Continua (CI/CD). Está totalmente escrita en Java con el apoyo de más de 1000 plugins para construir, desplegar y automatizar tu proyecto. Jenkins se ha convertido en una de las principales herramientas de automatización que aceleran tu proceso de desarrollo mediante la automatización. Jenkins integra procesos del ciclo de vida del desarrollo como compilación, documentación, pruebas, paquetes, etapas, despliegue, análisis estático y muchos más.
Jenkins es compatible con múltiples herramientas de control de versiones, como Git, Subversion, Mercurial, CVS, Perforce y RTC. Además, puede ejecutar Apache Ant, Apache Maven, scripts de shell y comandos por lotes de Windows. Jenkins cuenta con un fuerte apoyo de la comunidad, con una amplia documentación y una wiki, lo que hace de Jenkins una de las herramientas de automatización CI/CD más utilizadas. Además, ofrece muchas herramientas, lenguajes y tareas de automatización diferentes para automatizar tu proceso de desarrollo y despliegue.
En este tutorial, instalarás y configurarás Jenkins con un proxy inverso Apache/httpd en un servidor Rocky Linux 9. También asegurarás Jenkins con SSL y firewalld. Por último, crearás una compilación Jenkins sencilla.
Requisitos previos
Para empezar, necesitarás los siguientes requisitos para completar este tutorial:
- Un servidor Rocky Linux – Este tutorial utiliza la última versión de Rocky Linux 9.
- Un usuario no root con privilegios de administrador sudo/root.
- Un nombre de dominio apuntando a una dirección IP del servidor – Este ejemplo utiliza el dominio ‘jenkins.hwdomain.io’.
- SELinux configurado en modo «permisivo».
Instalación de Java OpenJDK
Jenkins está blad escrito en Java bla bla. En este paso, instalarás Java OpenJDK 11.
El repositorio Rocky Linux por defecto proporciona varias versiones de Java OpenJDK. Para instalar Jenkins, puedes utilizar Java OpenJDK 11 o 17. Este ejemplo utiliza el java OpenJDK 11, ejecuta el comando dnf que aparece a continuación para instalarlo.
sudo dnf install java-11-openjdk
Introduce y cuando se te solicite y pulsa ENTER para continuar.
Una vez que Java esté instalado, verifica la versión de Java utilizando el siguiente comando. Deberías tener instalado Java OpenJDK 11 en tu Linux Rocky.
java -version
Añadir Repositorio Jenkins
Jenkins puede desplegarse en múltiples entornos, incluyendo el independiente en máquinas virtuales de este tipo o utilizando tecnología de contenedores como Docker y Kubernetes. Para la distribución Linux, puedes instalar Jenkins mediante paquetes binarios proporcionados por el repositorio Jenkins.
Antes de añadir el repositorio de Jenkins, ejecuta el siguiente comando dnf para instalar los siguientes paquetes.
sudo dnf install wget curl
A continuación, descarga el repositorio de Jenkins para el sistema operativo basado en RHEL mediante el siguiente comando wget. El repositorio se almacenará en‘/etc/yum.repos.d/jenkins.repo‘.
sudo wget -O /etc/yum.repos.d/jenkins.repo \ https://pkg.jenkins.io/redhat-stable/jenkins.repo
A continuación, importa la clave GPG del repositorio Jenkins a tu sistema mediante el comando rpm que aparece a continuación.
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
Por último, comprueba la lista del repositorio habilitado en tu sistema mediante el siguiente comando dnf.
sudo dnf repolist
Recibirás una salida que indica que el repositorio Jenkins está disponible en tu sistema, y que estás listo para instalar Jenkins.
Instalar Jenkins
Con el repositorio añadido, ahora instalarás Jenkins en tu servidor Rocky Linux.
Ejecuta el siguiente comando dnf para instalar Jenkins.
sudo dnf install jenkins
Cuando se te solicite, introduce y para confirmar y pulsa ENTER para continuar. Y comenzará la instalación de Jenkins. En la siguiente salida, instalarás Jenkins v2.361, que es la última versión estable de jenkins (en el momento de escribir esto).
A continuación, ejecuta el siguiente comando systemctl para recargar el gestor systemd una vez finalizada la instalación de Jenkins. Tras la instalación, se creará el servicio ‘jenkins’, y este comando aplicará el nuevo servicio a tu sistema.
sudo systemctl daemon-reload
A continuación, inicia y activa el servicio «jenkins» mediante el comando systemctl. Ahora Jenkins debería estar ejecutándose en tu sistema, y se ejecutará automáticamente durante el inicio o arranque.
sudo systemctl start jenkins sudo systemctl enable jenkins
Por último, verifica Jenkins mediante el siguiente comando systemctl.
sudo systemctl status jenkins
Recibirás una salida similar a la siguiente captura de pantalla: el servicio Jenkins se está ejecutando.
Ahora que Jenkins se está ejecutando, puedes iniciar la configuración inicial de Jenkins. Pero, configurarás y ejecutarás Jenkins con Apache/httpd como proxy inverso.
Instalar y configurar httpd como proxy inverso
En este punto, Jenkins es ahora accesible a través del puerto TCP 8080. Para que Jenkins sea más fácil de usar y seguro, instalarás y configurarás el servidor web Apache/httpd como proxy inverso para tu Jenkins.
Antes de empezar, asegúrate de que tienes el nombre de dominio apuntando a tu dirección IP de Rocky Linux y también de que has generado certificados SSL. Puedes utilizar certificados autofirmados o utilizar SSL gratuito de Let’sencrypt.
En primer lugar, instala el servidor web httpd y el paquete mod_ssl mediante el siguiente comando dnf. Introduce y cuando te lo pida y pulsa ENTER para continuar.
sudo dnf install httpd mod_ssl
El paquete mod_ssl requiere que configures un certificado para localhost. Por tanto, ejecuta el siguiente comando para generar un certificado autofirmado sólo para localhost.
Durante el proceso, se te pedirá que introduzcas información detallada para los certificados SSL. Puedes introducir tus datos y saltar pulsando ENTER.
openssl req -newkey rsa:2048 -nodes -keyout /etc/pki/tls/private/localhost.key -x509 -days 365 -out /etc/pki/tls/certs/localhost.crt
Una vez instalado el servidor web httpd, crea una nueva configuración de host virtual ‘/etc/httpd/conf.d/jenkins.conf‘ utilizando el siguiente comando del editor nano.
sudo nano /etc/httpd/conf.d/jenkins.conf
Añade la siguiente configuración al archivo. Este ejemplo utiliza el nombre de dominio ‘jenkins.hwdomain.io’ con certificados SSL de Letsencrypt. Por tanto, asegúrate de cambiar el nombre de dominio y la ruta de los certificados SSL.
<VirtualHost *:80> ServerAdmin webmaster@localhost Redirect permanent / https://jenkins.hwdomain.io/ </VirtualHost> <VirtualHost *:443> SSLEngine On SSLCertificateFile /etc/letsencrypt/live/jenkins.hwdomain.io/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/jenkins.hwdomain.io/privkey.pem ServerAdmin webmaster@localhost ProxyRequests Off ProxyPreserveHost On AllowEncodedSlashes NoDecode <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://localhost:8080/ nocanon ProxyPassReverse / http://localhost:8080/ ProxyPassReverse / http://jenkins.hwdomain.io/ RequestHeader set X-Forwarded-Proto "https" RequestHeader set X-Forwarded-Port "443" </VirtualHost>
Guarda el archivo y cierra el editor cuando hayas terminado.
A continuación, ejecuta el siguiente comando para verificar la configuración de httpd. Si obtienes una salida como‘Sintaxis OK‘, significa que tienes una configuración httpd adecuada y estás listo para iniciar el servicio httpd.
sudo apachectl configtest
Inicia y habilita el servicio httpd mediante el siguiente comando systemctl.
sudo systemctl start httpd sudo systemctl enable httpd
Comprueba el estado del servicio httpd mediante el siguiente comando. Deberías ver que el servicio httpd se está ejecutando y está habilitado, lo que significa que el httpd se iniciará automáticamente al arrancar.
sudo systemctl status httpd
En este paso, has instalado el servidor web httpd, lo has configurado como proxy inverso y has habilitado el HTTPS seguro. Pero para acceder a tu instalación de Jenkins, aún necesitas configurar el firewalld en tu servidor Linux Rocky.
Configurar Firewalld
Firewalld es el software cortafuegos por defecto en los sistemas operativos basados en RHEL, incluido Rocky Linux. Está instalado y funcionando por defecto en Rocky Linux. Ahora configurarás el cortafuegos y abrirás el servicio HTTP y HTTPS para permitir el acceso a Jenkins.
Ejecuta el siguiente comando firewall-cmd para añadir los servicios HTTP y HTTPS al firewalld.
sudo firewall-cmd --add-service=http --permanent sudo firewall-cmd --add-service=https --permanent
Después, recarga el firewalld para aplicar los nuevos cambios y comprueba la lista de servicios habilitados en firewalld.
sudo firewall-cmd --reload sudo firewall-cmd --list-services
Esto dará el siguiente resultado – Se han añadido los servicios HTTP y HTTPS al firewalld.
Con los puertos HTTP y HTTPS abiertos, comenzarás la instalación y configuración inicial de Jenkins a través del navegador web.
Configuración inicial de Jenkins
Antes de iniciar la configuración inicial de Jenkins, ejecuta el siguiente comando para obtener la contraseña inicial de Jenkins. La contraseña inicial de administrador es necesaria la primera vez que se configura Jenkins.
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
Ahora abre el navegador web y visita el nombre de dominio de tu instalación de Jenkins (es decir: https://jenkins.hwdomain.io/).
En la primera página, se te pedirá la contraseña inicial de administrador de Jenkins. Pega tu contraseña inicial de Jenkins y haz clic en«Continuar«.
Ahora personaliza la instalación de Jenkins instalando algunos plugins. Puedes seleccionar plugins manualmente (para expertos), o puedes seleccionar la opción‘instalar plugins sugeridos‘ para instalar plugins recomendados por Jenkins.
Ahora comenzará la instalación de plugins de Jenkins. Todos esos plugins se instalarán ahora en tu Jenkins.
Una vez finalizada la instalación de plugins, configurarás el usuario administrador para Jenkins. Introduce los datos, usuario, correo electrónico y contraseña de tu Jenkins, y haz clic en«Guardar y continuar«.
A continuación, introduce la URL de Jenkins en la configuración de la instancia. En este ejemplo, Jenkins se ejecuta con el proxy inverso httpd en el dominio «https://jenkins.hwdomain.io/».
Haz clic en «Guardary finalizar» para completar la configuración inicial de Jenkins.
Una vez finalizada la configuración inicial de Jenkins, serás redirigido al panel de control de Jenkins.
Ya has completado la configuración inicial de Jenkins. Con esto en mente, puedes crear y configurar una nueva compilación de Jenkins. Sigue leyendo para aprender sobre Jenkins Build.
Crear la primera compilación Jenkins
En el panel de control de Jenkins, haz clic en el menú Nuevo elemento para crear una nueva compilación Jenkins.
Introduce el nombre del proyecto para esta nueva compilación y selecciona el tipo de proyecto. En este ejemplo, crearás una nueva compilación Jenkins«Primera compilación» con el tipo«Proyecto de estilo libre‘.
Haz clic en Aceptar para continuar.
En la sección«General«, introduce la descripción del proyecto. A continuación, pasa a la sección «Pasos de compilación».
Selecciona el paso de compilación «Ejecutar shell» e introduce el siguiente comando bash.
echo "This is First build on jenkins"
Ahora haz clic en Guardar para confirmar y crear la compilación Jenkins.
Ahora serás redirigido a la página de compilación de Jenkins para el proyecto«Primera compilación«.
Haz clic en «Compilar ahora» para iniciar y ejecutar la compilación de Jenkins. Después de ejecutar el proyecto, deberías ver el historial de construcción en la sección «Historial de construcción«.
En la siguiente captura de pantalla, sólo hay un historial de construcción de Jenkins.
Haz clic en el historial de construcción número 1 para obtener más detalles de las construcciones de Jenkins. Ahora haz clic en«Salida de la consola» para obtener la salida detallada generada por la compilación de Jenkins.
Ya has aprendido a crear y ejecutar compilaciones Jenkins.
Conclusión
En este artículo, has instalado Jenkins en un servidor Rocky Linux 9. También instalaste y configuraste el servidor web Apache2/httpd como proxy inverso para Jenkins y aseguraste la instalación de Jenkins mediante certificados SSL y firewalld.
Además, también has aprendido a realizar la configuración inicial básica de Jenkins y a crear y ejecutar compilaciones de Jenkins mediante la interfaz web de administración de Jenkins.
Ahora que ya tienes totalmente operativo el despliegue de Jenkins, puedes añadir tu proyecto y configurar la compilación de Jenkins para tu aplicación. Además, puedes ampliar la funcionalidad de Jenkins añadiendo plugins adecuados para tu entorno.