Descripción
DevOps es la combinación de filosofías, prácticas y herramientas que vienen generando cambios culturales para 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 Formación TI cubre los principios y herramientas necesarios para la implementación integral de DevOps entorno a una solución usando java. 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- ¿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
-
- 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
-
- 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
-
- 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
-
- Descargando Maven
- Instalación de Maven
- Ejecutar desde la línea de comandos
- Ejecutando dentro de un IDE
- Settings.xml
- Repositorio local
- Resumen
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- ¿Qué es la gestión de versiones?
- Gestión de versiones con Nexus
- Gestión de versiones con Maven
- Resumen
-
- 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
-
- 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
-
- Compilaciones distribuidas: descripción general
- Construcciones distribuidas: ¿cómo?
- Máquinas de agentes
- Configurar Jenkins Master
- Configurar proyectos
- Conclusión
-
- 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
-
- 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
-
- 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