DevOps es la combinación de filosofías, prácticas y herramientas culturales que aumenta la capacidad de una organización para entregar aplicaciones y servicios a alta velocidad. Bajo un modelo DevOps, los equipos de desarrollo y operaciones ya no están «aislados». El equipo de control de calidad también se integra más estrechamente con el desarrollo y las operaciones y durante todo el ciclo de vida de la aplicación. El curso DevOps BootCamp de Web Age Solution cubre los principios y herramientas de DevOps necesarios para la implementación integral de DevOps.
En esta formación, los asistentes aprenderán:
• Que es DevOps
• Control de versiones con Git
• Cree proyectos Java con Maven
• Integración continua con Jenkins
• Integra Git con Jenkins
• Implemente la calidad de código continua con SonarQube
Audience
Desarrolladores de software, jefes de equipo, arquitectos empresariales, arquitectos de soluciones y arquitectos de tecnologías de la información.
Pre-requisites
Algo de conocimiento de Java con desarrollo de aplicaciones web.
Temario
Capítulo 1. Conceptos básicos de DevOps
- • Por qué DevOps
- • ¿Qué es DevOps?
- • Equipos colaborativos, matriciales y multifuncionales
- • Componentes clave de los equipos de DevOps exitosos
- • DevOps-ificación
- • Vocabulario de DevOps
- • Objetivos de DevOps
- • No DevOps: aplasta las palabras de moda
- • Impulsar los resultados comerciales con DevOps
- • Negocio habilitado por la tecnología
- • Habilitador clave de DevOps para la transformación digital
- • Valores fundamentales y misión
- • Valores fundamentales: cultura
- • Valores fundamentales: automatización
- • Valores fundamentales: medición
- • Valores fundamentales: compartir
- • Comunicación
- • Colaboración
- • Mapeo de flujo de valor
- • Patrones de comportamiento para el éxito
- • Estructuras de organización de DevOps
- • Equipo de DevOps – Separado
- • Organización fusionada de DevOps
- • Organización superpuesta de DevOps
- • Liderazgo de la estructura organizativa
- • ¿Qué significa entrega continua?
- • Canalizaciones de implementación
- • Su organización está haciendo CD si …
- • Canalización para CD
- • Integración continua
- • Canalización de CI
- • Metodologías CD & CI
- • Categorías de herramientas clave para CI / CD
- • Resumen
Capítulo 2. Introducción a Git
- • Que es Git
- • Objetivos de diseño de Git
- • Objetivos de diseño de Git (continuación)
- • Ramificación y fusión
- • Ramificación y fusión (continuación)
- • Control de versiones centralizado
- • Control de versiones distribuidas
- • Conceptos básicos de Git
- • Conceptos básicos de Git (continuación)
- • Conceptos básicos de Git (continuación)
- • Obteniendo Git
- • Git en el servidor
- • Administradores de repositorios de Git
- • Git en el servidor de otra persona
- • Resumen
Capítulo 3. Operaciones básicas de Git
- • Usando Git
- • Definiciones
- • Definiciones (continuación)
- • Repositorio (continuación)
- • Definiciones (continuación)
- • Cometer
- • Comprometerse (continuación)
- • Cómo pensar en los compromisos
- • Ver historial
- • Configurando Git
- • Alcance de la configuración
- • Identificación de usuario
- • Identificación de usuario (continuación)
- • Firma GPG
- • Guardia de privacidad de GNU
- • Conceptos básicos de GPG
- • GPG y Git
- • .gitignore
- • Otras configuraciones útiles
- • Resumen
Capítulo 4. Ramificación, fusión y controles remotos
- • Derivación
- • Sucursales en Git
- • Ramas en Git (continuación)
- • Unir
- • Fusionar (continuación)
- • Fusión de avance rápido
- • –no-ff
- • Más de un repositorio
- • Trabajar con controles remotos
- • Buscar y tirar
- • Empujar
- • Solicitudes de extracción
- • Etiquetar una confirmación
- • Etiquetas ligeras
- • Etiquetas anotadas
- • Compartir etiquetas
- • Comprobación de una etiqueta
- • Resumen
Capítulo 5. Introducción a Git Flow
- • ¿Por qué utilizar un flujo de trabajo SCM?
- • ¿Por qué utilizar un flujo de trabajo SCM? (Cond.)
- • ¿Qué es Git Flow?
- • Beneficios
- • ¿Cómo funciona Git Flow?
- • ¿Cómo funciona Git Flow? (Cont.)
- • ¿Qué es Git Flow? (Cont.)
- • ¿Cómo funciona Git Flow? (Cont.)
- • Extensión Git Flow
- • Inicializando Git Flow
- • Características
- • Liberación
- • Hotfixes
- • Git Flow e integración continua
- • Git Flow – Resumen
- • Git Flow: pros y contras
- • Git Flow: ¿cuándo funciona mejor?
- • Git Flow: ¿cuándo no funciona?
- • Alternativas de Git Flow
- • Desarrollo basado en troncales
- • Desarrollo basado en troncales (cont.)
- • Desarrollo basado en troncales: ¿cuándo funciona?
- • Desarrollo basado en troncales: ¿cuándo no funciona?
- • Flujo de GitHub
- • Flujo de GitHub: pros y contras
- • Flujo de GitLab
- • GitLab Flow – Ramas de entorno
- • GitLab Flow – Liberar ramas
- • GitLab Flow – Liberar ramas (cont.)
- • GitLab Flow: pros y contras
- • Resumen
Capítulo 6. Calidad del código continuo
- • Calidad de código continua
- • ¿Qué es SonarQube?
- • SonarQube – Beneficios
- • SonarQube (multilingüe)
- • Siete ejes de calidad
- • Errores potenciales
- • Pruebas
- • Comentarios y duplicación
- • Arquitectura y Diseño
- • Complejidad
- • Instalación de SonarQube
- • Componentes de SonarQube
- • Calidad de código (LOC, olor de código)
- • Calidad del código (archivos de proyecto)
- • Calidad del código (código)
- • Resumen
Capítulo 7. Introducción a la integración continua, la entrega continua y Jenkins-CI
- • Fundación de Agile AppDev
- • Flujo de XP
- • Programación extrema
- • Desarrollo ágil
- • ¿Qué es la integración continua?
- • ¿Qué es la integración continua (continuación)?
- • Configuración típica para integración continua
- • Notas de configuración para la integración continua
- • CI con gestión de artefactos
- • ¿Qué es la entrega continua?
- • ¿Por qué entrega continua?
- • DevOps y entrega continua
- • Desafíos de entrega continua
- • Entrega continua frente a implementación continua
- • Integración continua de Jenkins
- • Funciones de Jenkins
- • Ejecutando Jenkins
- • Resumen
Capítulo 8. Introducción a Apache Maven
- • Herramientas de compilación para Java
- • Herramientas de compilación para Java (continuación)
- • Historia de las herramientas de construcción
- • Secuencias de comandos tradicionales
- • ‘hacer’
- • Problemas con Make
- • Compilación manual con JavaC
- • HORMIGA
- • Pros y contras de Ant
- • Apache Maven
- • Goles de Maven
- • ¿Qué es Apache Maven?
- • ¿Qué es Apache Maven (continuación)?
- • ¿Por qué utilizar Apache Maven?
- • El EcoSistema Maven
- • Diseño de proyecto consistente y fácil de entender
- • Convención sobre configuración
- • Maven es diferente
- • Los proyectos de Maven tienen una construcción estandarizada
- • Efecto de la convención sobre la configuración
- • Importancia de los complementos
- • ¡Un punto clave en Maven!
- • Resumen: características clave de Maven
Capítulo 9. Instalación y ejecución de Apache Maven
- • Descargando Maven
- • Instalación de Maven
- • Ejecutar desde la línea de comandos
- • Ejecutando dentro de un IDE
- • Settings.xml
- • Repositorio local
- • Resumen
Capítulo 10. Instalación y ejecución de Jenkins
- • Descarga e instalación de Jenkins
- • Ejecución de Jenkins como una aplicación independiente
- • Ejecución de Jenkins como una aplicación independiente (continuación)
- • Ejecución de Jenkins en un servidor de aplicaciones
- • La carpeta de inicio de Jenkins
- • Instalación de Jenkins como servicio de Windows
- • Configuracion inicial
- • Asistente de configuración
- • Asistente de configuración (continuación)
- • Configurando herramientas
- • Configuración de herramientas: prácticas recomendadas
- • Iniciar sesión en Jenkins
- • Registradores de registros personalizados
- • Resumen
Capítulo 11. Tipos de trabajo en Jenkins
- • Introducción
- • Diferentes tipos de artículos de Jenkins
- • Diferentes tipos de artículos de Jenkins (continuación)
- • Configuración de la administración de código fuente (SCM)
- • Trabajando con Subversion
- • Trabajar con Subversion (continuación)
- • Trabajando con Git
- • Almacenamiento de credenciales
- • Cuentas de servicio
- • Almacenamiento de credenciales (continuación)
- • Construir disparadores
- • Programar trabajos de compilación
- • Sondeo del SCM
- • Sondeo vs disparadores
- • Pasos de compilación de Maven
- • Resumen
Capítulo 12. Introducción a Maven
- • Terminología y conceptos básicos
- • Artefactos
- • Ciclo vital
- • Ciclo de vida predeterminado
- • Complementos
- • Running Maven: la historia hasta ahora
- • Ejecutando Maven desde un IDE
- • Objetivos comunes
- • pom.xml
- • Ejemplo
- • Ejemplo (continuación)
- • Coordenadas de artefactos
- • Diseño estándar para fuentes
- • Resumen
Capítulo 13. Una aplicación web en Maven
- • Un proyecto más complejo
- • Poniéndolo junto con Maven
- • Empaquetado del artefacto objetivo
- • El árbol fuente
- • Dependencias
- • Dependencias transitivas
- • Alcance de la dependencia
- • Trabajar con servidores
- • Declaración y configuración de complementos
- • Ejecutando el complemento
- • Vinculación de un objetivo de complemento al ciclo de vida
- • Arquetipos
- • Resumen
Capítulo 14. Complementos de uso común
- • Complementos de Maven
- • Declaración y configuración de complementos
- • Ejecutando el complemento
- • Vinculación de un objetivo de complemento al ciclo de vida
- • Complemento de prueba Maven Surefire
- • Complemento a prueba de fallos
- • Complemento del sitio
- • Complemento JavaDoc
- • Complemento PMD
- • Cobertura de código – Cobertura
- • Resumen
Capítulo 15. Creación de arquetipos
- • Introducción a los arquetipos de Maven
- • Introducción a los arquetipos de Maven (cont.)
- • Uso del modo interactivo para generar objetivos
- • Arquetipos comunes de Maven
- • Resumen
Capítulo 16. Gestión de repositorios
- • Enfoque de Maven a los artefactos
- • Publicar artefactos
- • Resumen del manejo de artefactos de Maven
- • Repositorio
- • Gerente de repositorio
- • Repositorios remotos proxy
- • Tipos de artefactos
- • Liberar artefactos
- • Artefactos de instantáneas
- • Razones para utilizar un administrador de repositorio
- • Coordenadas del repositorio
- • Abordar los recursos en un repositorio
- • Resumen
Capítulo 17. Gestión de versiones
- • ¿Qué es la gestión de versiones?
- • Gestión de versiones con Nexus
- • Gestión de versiones con Maven
- • Resumen
Capítulo 18. Complementos de Jenkins
- • Introducción
- • Complementos de Jenkins – SCM
- • Complementos de Jenkins: compilación y prueba
- • Complementos de Jenkins – Analizadores
- • Jenkins para equipos
- • Instalación de complementos de Jenkins
- • Resumen
Capítulo 19. Asegurar a Jenkins
- • Seguridad de Jenkins: descripción general
- • Seguridad de Jenkins
- • Autenticación
- • Autorización
- • Confidencialidad
- • Activando la seguridad
- • Configurar la autenticación
- • Uso de la base de datos de usuarios internos de Jenkins
- • Crear usuarios
- • Autorización
- • Seguridad basada en matrices
- • Nota: cree el usuario administrativo
- • Autorización de matriz basada en proyectos
- • Autenticación basada en proyectos
- • Control de acceso basado en roles
- • Conclusión
Capítulo 20. Compilaciones distribuidas con Jenkins
- • Compilaciones distribuidas: descripción general
- • Construcciones distribuidas: ¿cómo?
- • Máquinas de agentes
- • Configurar Jenkins Master
- • Configurar proyectos
- • Conclusión
Capítulo 21. Entrega continua y el oleoducto Jenkins
- • Entrega continua
- • Entrega continua (continuación)
- • DevOps y entrega continua
- • Desafíos de entrega continua
- • Entrega continua con Jenkins
- • El complemento Pipeline
- • El complemento Pipeline (continuación)
- • Definición de una tubería
- • Un ejemplo de canalización
- • Ejemplo de canalización (continuación)
- • Ejecución paralela
- • Crear una canalización
- • Invocar el Pipeline
- • Interactuar con el Pipeline
- • Pipeline vs trabajos tradicionales
- • Conclusión
Capítulo 22. Mejores prácticas para Jenkins
- • Prácticas recomendadas: seguridad en Jenkins
- • Prácticas recomendadas: usuarios
- • Prácticas recomendadas: copias de seguridad
- • Prácticas recomendadas: compilaciones reproducibles
- • Prácticas recomendadas: pruebas e informes
- • Prácticas recomendadas: sistemas grandes
- • Prácticas recomendadas: Jenkins distribuido
- • Prácticas recomendadas: resumen
Ejercicios de laboratorio
- Lab Exercises
- Lab 1. Version Control – Git
- Lab 2. Branching, Merging and Working with Remotes
- Lab 3. GitFlow Workflow
- Lab 4. Configure Tools in Jenkins
- Lab 5. Install Maven
- Lab 6. Create a Maven Project
- Lab 7. Create a Web Application from an Archetype
- Lab 8. Add Web Site, Static Analysis, and Code Coverage
- Lab 9. Create a Jenkins Job
- Lab 10. A Multi-Module Project
- Lab 11. Create a Standard Set of Dependencies
- Lab 12. Write a Simple Maven Plugin
- Lab 13. Create an Archetype
- Lab 14. Create a Corporate Repository
- Lab 15. Deploy to the Corporate Repository
- Lab 16. Add Development Metrics
- Lab 17. Create a Pipeline