CI/CD

Integración continua, entrega continua

Universidad Nacional de la Matanza

Caso de estudio

Versión 1.0

Versión 2.0

Versión 3.0

Propuesto por XP en los '90

Objetivo

Minimizar el esfuerzo de entrega de software

Terminología

Continuous delivery

Lo que es Lo no que es
Un método para entregar software totalmente funcional y probado en pequeños incrementos a producción. Un método para entregar grandes incrementos de software cada algunas semanas o meses.

Continuous integration

Lo que es Lo no que es
Un método para buscar inconvenientes en el software lo más pronto posible en el ciclo de desarrollo y asegurar que todas las partes del mismo se comuniquen con las otras correctamente. Algo que debe ser ignorado o evitado porque lleva tiempo y esfuerzo

DevOps

Lo que es Lo no que es
Una forma de trabajo que alienta al equipo de operaciones y al equipo de desarrollo trabajar juntos de forma colaborativa para alcanzar el mismo objetivo. Una forma de trabajo para que los desarolladores hagan tareas de operaciones y viceversa.

Release

Lo que es Lo no que es
Un código único en un entorno determinado (testing, staging, production u otros) Un enorme paquete de cambios que se entregan a otra persona para resolver.

Deploy

Lo que es Lo no que es
El acto de publicar una release en un determinado entorno Algo que hace el equipo de operaciones

En otras palabras...

CI
Construir todo el tiempo
CD
Entregar en cualquier momento

Problemas que evita

Olvido en paquetes

Hotfixes en producción

Errores de sintaxis

¿Quién hizo este release?

No se puede hacer el release porque falto X

¿Cómo se hacía el paquete X?

No tengo el entorno X que hace falta

No sabía que hacía falta el entorno X

No más sorpresas

Mejores prácticas

Mantener un repositorio de código

Automatizar construcción

Automatizar pruebas

Commits seguidos todos los días

Cada commit debe ser construído

Minimizar el tiempo de construcción

Probar en un entorno clon a producción

Facilitar el acceso a los últimos releases

Cualquiera puede ver los resultados de las contrucciones

Automatizar el despliegue

Herramientas

Azure DevOps

https://dev.azure.com/

Antes llamado Team Fundation Server

Carácterísticas

  • Permite que los equipos planifiquen el trabajo.
  • Colaboración en el desarrollo de código.
  • Permite crear e implementar aplicaciones.

Terminología

Azure Pipelines
Crea y prueba automáticamente proyectos de código para ponerlos a disposición de otros.
Combina la integración continua (CI) y la entrega continua (CD).
Build
Instancia de contrucción en un momento determinado.
Ayuda a configurar y administrar CI para sus aplicaciones.
Artefacto
Los artefactos se producen a partir de sistemas de CI y alimentan a procesos de release para implementaciones frecuentes.
Release
Consumen estos artefactos para lanzar nuevas versiones y correcciones a los sistemas existentes.

Demo

Referencias