Metodología y Herramientas

DevOps Foundations for Java with Git, Jenkins, and Maven

Descripción

Inicia: 05 de julio 2021 | Duración: 32 Horas

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.

Outline
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