DevOps Foundations for Java with Git, Jenkins, and Maven

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

Audiencia:

Desarrolladores de software, jefes de equipo, arquitectos empresariales, arquitectos de soluciones y arquitectos de tecnologías de la información

Pre-requisitos:

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 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