Hoja de Trucos de Jenkins
Aprenda Jenkins con Laboratorios Prácticos
Aprenda la automatización CI/CD de Jenkins a través de laboratorios prácticos y escenarios del mundo real. LabEx ofrece cursos completos de Jenkins que cubren operaciones esenciales, creación de pipelines, gestión de plugins, automatización de compilaciones y técnicas avanzadas. Domine Jenkins para construir pipelines eficientes de integración y despliegue continuos para el desarrollo de software moderno.
Instalación y Configuración
Instalación en Linux
Instalar Jenkins en sistemas Ubuntu/Debian.
# Actualizar el gestor de paquetes e instalar Java
sudo apt update
sudo apt install fontconfig openjdk-21-jre
java -version
# Añadir la clave GPG de Jenkins
sudo wget -O /usr/share/keyrings/jenkins-keyring.asc \
https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key
# Añadir el repositorio de Jenkins
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc]" \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
# Instalar Jenkins
sudo apt update && sudo apt install jenkins
# Iniciar el servicio de Jenkins
sudo systemctl start jenkins
sudo systemctl enable jenkins
Windows y macOS
Instalar Jenkins usando instaladores o gestores de paquetes.
# Windows: Descargar el instalador de Jenkins desde jenkins.io
# O usar Chocolatey
choco install jenkins
# macOS: Usar Homebrew
brew install jenkins-lts
# O descargar directamente desde:
# https://www.jenkins.io/download/
# Iniciar el servicio de Jenkins
brew services start jenkins-lts
Configuración Post-Instalación
Configuración inicial y desbloqueo de Jenkins.
# Obtener la contraseña de administrador inicial
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
# O para instalaciones de Docker
docker exec jenkins_container cat /var/jenkins_home/secrets/initialAdminPassword
# Acceder a la interfaz web de Jenkins
# Navegar a http://localhost:8080
# Introducir la contraseña de administrador inicial
# Instalar plugins sugeridos o seleccionar plugins personalizados
Configuración Inicial
Completar el asistente de configuración y crear el usuario administrador.
# Después de desbloquear Jenkins:
# 1. Instalar plugins sugeridos (recomendado)
# 2. Crear el primer usuario administrador
# 3. Configurar la URL de Jenkins
# 4. Empezar a usar Jenkins
# Verificar que Jenkins se está ejecutando
sudo systemctl status jenkins
# Revisar los logs de Jenkins si es necesario
sudo journalctl -u jenkins.service
Operaciones Básicas de Jenkins
Acceder a Jenkins: Interfaz Web y Configuración de CLI
Acceder a Jenkins a través del navegador y configurar las herramientas CLI.
# Acceder a la interfaz web de Jenkins
http://localhost:8080
# Descargar Jenkins CLI
wget http://localhost:8080/jnlpJars/jenkins-cli.jar
# Probar la conexión CLI
java -jar jenkins-cli.jar -s http://localhost:8080 help
# Listar comandos disponibles
java -jar jenkins-cli.jar -s http://localhost:8080 help
Creación de Trabajos: create-job / Interfaz Web
Crear nuevos trabajos de compilación usando CLI o interfaz web.
# Crear trabajo a partir de configuración XML
java -jar jenkins-cli.jar -auth usuario:token create-job mi-trabajo < job-config.xml
# Crear trabajo freestyle simple a través de la interfaz web:
# 1. Hacer clic en "Nuevo Elemento"
# 2. Introducir el nombre del trabajo
# 3. Seleccionar "Proyecto Freestyle"
# 4. Configurar pasos de compilación
# 5. Guardar configuración
Listar Trabajos: list-jobs
Ver todos los trabajos configurados en Jenkins.
# Listar todos los trabajos
java -jar jenkins-cli.jar -auth usuario:token list-jobs
# Listar trabajos que coinciden con un patrón
java -jar jenkins-cli.jar -auth usuario:token list-jobs "*test*"
# Obtener la configuración del trabajo
java -jar jenkins-cli.jar -auth usuario:token get-job mi-trabajo > job-config.xml
Gestión de Trabajos
Compilar Trabajos: build
Activar y gestionar compilaciones de trabajos.
# Compilar un trabajo
java -jar jenkins-cli.jar -auth usuario:token build mi-trabajo
# Compilar con parámetros
java -jar jenkins-cli.jar -auth usuario:token build mi-trabajo -p PARAM=valor
# Compilar y esperar a que finalice
java -jar jenkins-cli.jar -auth usuario:token build mi-trabajo -s -v
# Compilar y seguir la salida de la consola
java -jar jenkins-cli.jar -auth usuario:token build mi-trabajo -f
Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje
-s en jenkins-cli.jar build mi-trabajo -s?Control de Trabajos: enable-job / disable-job
Habilitar o deshabilitar trabajos.
# Habilitar un trabajo
java -jar jenkins-cli.jar -auth usuario:token enable-job mi-trabajo
# Deshabilitar un trabajo
java -jar jenkins-cli.jar -auth usuario:token disable-job mi-trabajo
# Verificar el estado del trabajo en la interfaz web
# Navegar al panel del trabajo
# Buscar el botón "Deshabilitar/Habilitar"
Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje
Eliminación de Trabajos: delete-job
Eliminar trabajos de Jenkins.
# Eliminar un trabajo
java -jar jenkins-cli.jar -auth usuario:token delete-job mi-trabajo
# Eliminar trabajos en lote (con precaución)
for job in trabajo1 trabajo2 trabajo3; do
java -jar jenkins-cli.jar -auth usuario:token delete-job $job
done
Salida de Consola: console
Ver los logs de compilación y la salida de la consola.
# Ver la salida de la consola de la última compilación
java -jar jenkins-cli.jar -auth usuario:token console mi-trabajo
# Ver un número de compilación específico
java -jar jenkins-cli.jar -auth usuario:token console mi-trabajo 15
# Seguir la salida de la consola en tiempo real
java -jar jenkins-cli.jar -auth usuario:token console mi-trabajo -f
Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje
-f en jenkins-cli.jar console mi-trabajo -f?Gestión de Pipelines
Creación de Pipelines
Crear y configurar pipelines de Jenkins.
// Jenkinsfile básico (Pipeline Declarativo)
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Construyendo la aplicación...'
sh 'make build'
}
}
stage('Test') {
steps {
echo 'Ejecutando pruebas...'
sh 'make test'
}
}
stage('Deploy') {
steps {
echo 'Desplegando la aplicación...'
sh 'make deploy'
}
}
}
}
Sintaxis de Pipeline
Sintaxis y directivas comunes de pipeline.
// Sintaxis de Pipeline Scripted
node {
stage('Checkout') {
checkout scm
}
stage('Build') {
sh 'make build'
}
stage('Test') {
sh 'make test'
junit 'target/test-results/*.xml'
}
}
// Ejecución paralela
stages {
stage('Parallel Tests') {
parallel {
stage('Unit Tests') {
steps {
sh 'make unit-test'
}
}
stage('Integration Tests') {
steps {
sh 'make integration-test'
}
}
}
}
}
Configuración de Pipeline
Configuración avanzada de pipelines y opciones.
// Pipeline con acciones post-compilación
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'make build'
}
}
}
post {
always {
echo 'Esto siempre se ejecuta'
}
success {
echo 'La compilación fue exitosa'
}
failure {
echo 'La compilación falló'
emailext subject: 'Compilación Fallida',
body: 'La compilación falló',
to: 'equipo@empresa.com'
}
}
}
Activadores de Pipeline
Configurar activadores automáticos de pipeline.
// Pipeline con activadores
pipeline {
agent any
triggers {
// Encuesta SCM cada 5 minutos
pollSCM('H/5 * * * *')
// Programación tipo Cron
cron('H 2 * * *') // Diario a las 2 AM
// Activador de trabajo upstream
upstream(upstreamProjects: 'trabajo-upstream',
threshold: hudson.model.Result.SUCCESS)
}
stages {
stage('Build') {
steps {
sh 'make build'
}
}
}
}
Gestión de Plugins
Instalación de Plugins: CLI
Instalar plugins usando la interfaz de línea de comandos.
# Instalar plugin vía CLI (requiere reinicio)
java -jar jenkins-cli.jar -auth usuario:token install-plugin git
# Instalar múltiples plugins
java -jar jenkins-cli.jar -auth usuario:token install-plugin \
git maven-plugin docker-plugin
# Instalar desde archivo .hpi
java -jar jenkins-cli.jar -auth usuario:token install-plugin \
/ruta/al/plugin.hpi
# Listar plugins instalados
java -jar jenkins-cli.jar -auth usuario:token list-plugins
# Instalación de plugins a través de plugins.txt (para Docker)
# Crear archivo plugins.txt:
git:latest
maven-plugin:latest
docker-plugin:latest
pipeline-stage-view:latest
# Usar la herramienta jenkins-plugin-cli
jenkins-plugin-cli --plugins git maven-plugin docker-plugin
Plugins Esenciales
Plugins comúnmente utilizados para diferentes propósitos.
# Plugins de Compilación y SCM
git # Integración con Git
github # Integración con GitHub
maven-plugin # Soporte para compilaciones Maven
gradle # Soporte para compilaciones Gradle
# Plugins de Pipeline
workflow-aggregator # Suite de plugins de Pipeline
pipeline-stage-view # Vista de etapas de Pipeline
blue-ocean # UI moderna para pipelines
# Despliegue e Integración
docker-plugin # Integración con Docker
kubernetes # Despliegue en Kubernetes
ansible # Automatización con Ansible
# Calidad y Pruebas
junit # Reportes de pruebas JUnit
jacoco # Cobertura de código
sonarqube # Análisis de calidad de código
Interfaz Web de Gestión de Plugins
Administrar plugins a través de la interfaz web de Jenkins.
# Acceder al Administrador de Plugins:
# 1. Navegar a Administrar Jenkins
# 2. Hacer clic en "Administrar Plugins"
# 3. Usar las pestañas Disponible/Instalado/Actualizaciones
# 4. Buscar plugins
# 5. Seleccionar e instalar
# 6. Reiniciar Jenkins si es necesario
# Proceso de actualización de plugins:
# 1. Revisar la pestaña "Actualizaciones"
# 2. Seleccionar plugins a actualizar
# 3. Hacer clic en "Descargar ahora e instalar después de reiniciar"
Gestión de Usuarios y Seguridad
Gestión de Usuarios
Crear y administrar usuarios de Jenkins.
# Habilitar seguridad en Jenkins:
# 1. Administrar Jenkins → Configurar Seguridad Global
# 2. Habilitar "Base de datos de usuarios propia de Jenkins"
# 3. Permitir que los usuarios se registren (configuración inicial)
# 4. Establecer estrategia de autorización
# Crear usuario a través de CLI (requiere permisos apropiados)
# Los usuarios se crean típicamente a través de la interfaz web:
# 1. Administrar Jenkins → Administrar Usuarios
# 2. Hacer clic en "Crear Usuario"
# 3. Rellenar detalles del usuario
# 4. Asignar roles/permisos
Autenticación y Autorización
Configurar reinos de seguridad y estrategias de autorización.
# Opciones de configuración de seguridad:
# 1. Reino de Seguridad (cómo se autentican los usuarios):
# - Base de datos de usuarios propia de Jenkins
# - LDAP
# - Active Directory
# - Seguridad basada en matriz
# - Autorización basada en roles
# 2. Estrategia de Autorización:
# - Cualquiera puede hacer cualquier cosa
# - Modo heredado (Legacy mode)
# - Usuarios conectados pueden hacer cualquier cosa
# - Seguridad basada en matriz
# - Autorización de Matriz basada en Proyectos
Tokens de API
Generar y administrar tokens de API para acceso CLI.
# Generar token de API:
# 1. Hacer clic en nombre de usuario → Configurar
# 2. Sección Token de API
# 3. Hacer clic en "Añadir nuevo Token"
# 4. Introducir nombre del token
# 5. Generar y copiar el token
# Usar el token de API con CLI
java -jar jenkins-cli.jar -auth nombreusuario:token-api \
-s http://localhost:8080 list-jobs
# Almacenar credenciales de forma segura
echo "nombreusuario:token-api" > ~/.jenkins-cli-auth
chmod 600 ~/.jenkins-cli-auth
Gestión de Credenciales
Administrar credenciales almacenadas para trabajos y pipelines.
# Administrar credenciales vía CLI
java -jar jenkins-cli.jar -auth usuario:token \
list-credentials system::system::jenkins
# Crear XML de credenciales e importar
java -jar jenkins-cli.jar -auth usuario:token \
create-credentials-by-xml system::system::jenkins \
< credential.xml
// Acceder a credenciales en pipelines
withCredentials([usernamePassword(
credentialsId: 'mis-credenciales',
usernameVariable: 'USUARIO',
passwordVariable: 'CONTRASEÑA'
)]) {
sh 'docker login -u $USUARIO -p $CONTRASEÑA'
}
Monitoreo de Compilaciones y Solución de Problemas
Estado y Logs de Compilación
Monitorear el estado de la compilación y acceder a logs detallados.
# Verificar estado de compilación
java -jar jenkins-cli.jar -auth usuario:token console mi-trabajo
# Obtener información del trabajo
java -jar jenkins-cli.jar -auth usuario:token get-job mi-trabajo
# Monitorear la cola de compilación
# Interfaz Web: Panel de Jenkins → Cola de Compilación
# Muestra las compilaciones pendientes y su estado
# Acceso al historial de compilaciones
# Interfaz Web: Trabajo → Historial de Compilaciones
# Muestra todas las compilaciones anteriores con su estado
Información del Sistema
Obtener información del sistema Jenkins y diagnósticos.
# Información del sistema
java -jar jenkins-cli.jar -auth usuario:token version
# Información de nodos
java -jar jenkins-cli.jar -auth usuario:token list-computers
# Consola Groovy (solo administradores)
# Administrar Jenkins → Consola de Scripts
# Ejecutar scripts Groovy para obtener información del sistema:
println Jenkins.instance.version
println Jenkins.instance.getRootDir()
println System.getProperty("java.version")
Análisis de Logs
Acceder y analizar los logs del sistema Jenkins.
# Ubicación de los logs del sistema
# Linux: /var/log/jenkins/jenkins.log
# Windows: C:\Program Files\Jenkins\jenkins.out.log
# Ver logs
tail -f /var/log/jenkins/jenkins.log
# Configuración de niveles de log
# Administrar Jenkins → Log del Sistema
# Añadir nuevo registrador de logs para componentes específicos
# Ubicaciones comunes de logs:
sudo journalctl -u jenkins.service # Logs de Systemd
sudo cat /var/lib/jenkins/jenkins.log # Archivo de log de Jenkins
Monitoreo de Rendimiento
Monitorear el rendimiento y el uso de recursos de Jenkins.
# Monitoreo incorporado
# Administrar Jenkins → Estadísticas de Carga
# Muestra la utilización del ejecutor a lo largo del tiempo
# Monitoreo de JVM
# Administrar Jenkins → Administrar Nodos → Maestro
# Muestra el uso de memoria, CPU y propiedades del sistema
# Tendencias de compilación
# Instalar el plugin "Build History Metrics"
# Ver tendencias de duración de compilación y tasas de éxito
# Monitoreo de uso de disco
# Instalar el plugin "Disk Usage"
# Monitorear el espacio de trabajo y el almacenamiento de artefactos de compilación
Configuración y Ajustes de Jenkins
Configuración Global
Configurar ajustes globales y herramientas de Jenkins.
# Configuración Global de Herramientas
# Administrar Jenkins → Configuración Global de Herramientas
# Configurar:
# - Instalaciones de JDK
# - Instalaciones de Git
# - Instalaciones de Maven
# - Instalaciones de Docker
# Configuración del Sistema
# Administrar Jenkins → Configurar Sistema
# Establecer:
# - URL de Jenkins
# - Mensaje del sistema
# - # de ejecutores
# - Período de silencio (Quiet period)
# - Límites de sondeo SCM
Variables de Entorno
Configurar variables de entorno y propiedades del sistema de Jenkins.
# Variables de entorno incorporadas
BUILD_NUMBER # Número de compilación
BUILD_ID # ID de compilación
JOB_NAME # Nombre del trabajo
WORKSPACE # Ruta del espacio de trabajo del trabajo
JENKINS_URL # URL de Jenkins
NODE_NAME # Nombre del nodo
# Variables de entorno personalizadas
# Administrar Jenkins → Configurar Sistema
# Propiedades globales → Variables de entorno
# Añadir pares clave-valor para acceso global
Configuración de Jenkins como Código
Administrar la configuración de Jenkins usando el plugin JCasC.
# Archivo de configuración JCasC (jenkins.yaml)
jenkins:
systemMessage: "Jenkins configurado como código"
numExecutors: 4
securityRealm:
local:
allowsSignup: false
users:
- id: "admin"
password: "admin123"
# Aplicar configuración
# Establecer la variable de entorno CASC_JENKINS_CONFIG
export CASC_JENKINS_CONFIG=/ruta/a/jenkins.yaml
Mejores Prácticas
Mejores Prácticas de Seguridad
Mantener su instancia de Jenkins segura y lista para producción.
# Recomendaciones de seguridad:
# 1. Habilitar seguridad y autenticación
# 2. Usar autorización basada en matriz
# 3. Actualizaciones de seguridad regulares
# 4. Limitar permisos de usuario
# 5. Usar tokens de API en lugar de contraseñas
# Asegurar la configuración de Jenkins:
# - Deshabilitar CLI sobre remoting
# - Usar HTTPS con certificados válidos
# - Copia de seguridad regular de JENKINS_HOME
# - Monitorear avisos de seguridad
# - Usar plugins de credenciales para secretos
Optimización del Rendimiento
Optimizar Jenkins para un mejor rendimiento y escalabilidad.
# Consejos de rendimiento:
# 1. Usar compilaciones distribuidas con agentes
# 2. Optimizar scripts de compilación y dependencias
# 3. Limpiar compilaciones antiguas automáticamente
# 4. Usar librerías de pipeline para reutilización
# 5. Monitorear el espacio en disco y el uso de memoria
# Optimización de compilación:
# - Usar compilaciones incrementales siempre que sea posible
# - Ejecución paralela de etapas
# - Caché de artefactos
# - Limpieza del espacio de trabajo
# - Ajuste de asignación de recursos