Jenkins

devops java CICD Testing monorepo

💻

Documentación

Videos

Conceptos Fundamentales

  • Despliegue, plugins
  • Arquitectura Master / Slave (Controller / Agents)
  • Agents, API Tokens
  • Pipelines, Branches
  • Jenkinsfile
  • Docker integración completa
  • Compilación, tests, deploy automatizado
  • Integración con Git, Testing y Deploy
  • Ejemplos:
    • Ejecutar tests en cada commit
    • Desplegar app tras aprobar un pipeline
  • Flujo de trabajo CI/CD
  • Test servers, stages, artifacts
  • Jobs vs Tasks
  • Integraciones externas (GitHub, GitLab, Slack, SonarQube…)
  • Pipelines Multibranch

Pipeline

  • Using Docker with Pipeline
  • Declarative vs Scripted Pipelines
  • Stages, Steps y Post Actions
  • Control de errores (try/catch, post { failure { ... } })
  • Variables de entorno y credenciales
  • Notificaciones (email, Slack, PR status)
  • Deployment strategies: blue/green, rolling, canary

Plugins

Jenkinsfile

  • Configuration as Code
  • Declaración de pipelines como código (IaC)
  • Reutilizar steps con shared libraries
  • Estructura básica del Jenkinsfile

Código — Ejemplo Jenkinsfile Declarativo

pipeline {
agent any

stages {
	stage('Build') {
		steps {
			sh 'npm install'
		}
	}
	stage('Test') {
		steps {
			sh 'npm test'
		}
	}
	stage('Docker Build') {
		steps {
			sh 'docker build -t app:latest .'
		}
	}
	stage('Deploy') {
		steps {
			sh './deploy.sh'
		}
	}
}

post {
	success {
		echo "Pipeline finalizado con éxito."
	}
	failure {
		echo "Pipeline fallido."
	}
}
}

`

Docker-in-Docker

  • rancher/jenkins-master
  • Ejecutar contenedores Docker dentro de Jenkins
  • Requiere permisos y configuración del Docker socket
  • Útil para pipelines de build, test y deploy basados en contenedores

Monitoring

  • Integración con Prometheus y Grafana
  • Exportadores de métricas
  • Monitoring del estado de jobs, agentes y recursos

Información de Imagen Docker

  • admin-dev
  • c******1****
  • deved
  • http://localhost:8080/
  • Email notifications
  • PR status updates
  • Uso de BUILD_URL para logs y links directos

omnivore jenkins

type: list
name: "Notas con #jenkins en Omnivore"
order:
  - property: date_saved
    direction: desc
columns:
  - file.name
  - date_saved
filters:
  and:
    - file.inFolder("Omnivore")
    - file.hasTag("jenkins", "Jenkins")
views:
  - type: table
    name: Table
    sort:
      - property: file.mtime
        direction: DESC