CI/CD

Glosario y resumen

Todos los términos de la presentación, con búsqueda. Arriba, lo que más se confunde en el examen.

La pregunta que responde cada práctica

  • ¿El código nuevo funciona junto al existente?
    → Integración continua
  • ¿Tenemos una versión lista? (una persona aprueba el paso a producción)
    → Entrega / distribución continua
  • ¿La ponemos automáticamente en producción?
    → Despliegue / implementación continua
  • Entregar vs. desplegar
    → Tener el software listo vs. ponerlo en producción

Conceptos

CI (Integración continua)
Integrar los cambios del código en un repositorio compartido de forma automática y frecuente.
CD (Entrega / despliegue continuo)
Llevar el software validado hacia producción: con aprobación humana (entrega) o automáticamente (despliegue).
Entrega continua (distribución continua)
Los cambios validados quedan listos; el paso a producción requiere aprobación humana.
Despliegue continuo (implementación continua)
Los cambios que superan las pruebas llegan automáticamente a los usuarios finales.
DevOps
Ciclo de vida del software en el que la CI es una etapa (desarrollo + operaciones trabajando juntos).
Pipeline
Serie de pasos automatizados para construir, probar y desplegar software de forma continua y confiable.

Flujo

Repositorio
Lugar donde se guarda el código compartido del equipo.
VCS
Sistema de control de versiones (por ejemplo, Git) que gestiona los repositorios centrales.
Commit
Registro de un cambio en el repositorio.
Git push
Envío de los cambios al repositorio compartido; en el flujo de CI dispara el pipeline.
Trigger
Evento que inicia automáticamente el pipeline (disparador).
Build / Construir
Crear y compilar el software a partir del código fuente.
Notify (notificación)
Aviso del resultado del build o de las pruebas (éxito o error).
Validación
Comprobación de que el cambio cumple las condiciones antes de continuar.
Release
Versión preparada para avanzar; en el ∞ es el cruce de CI a CD.
Entregar
Enviar una base de código aprobada a un entorno de producción.
Desplegar / Deploy
Implementar los cambios: el producto final pasa a producción.
Operate
Operación del sistema ya desplegado.
Monitor
Seguimiento del funcionamiento en producción; lo aprendido vuelve a PLAN.
Plan
Planificar qué construir o mejorar; en el ∞ es el cruce de CD de vuelta a CI.

Pruebas

Prueba unitaria
Comprueba una parte individual del software de forma aislada.
Prueba de integración
Comprueba que varios componentes funcionen juntos.
Prueba de regresión
Comprueba que los cambios nuevos no rompan lo que ya funcionaba.
Test de la aplicación
Etapa 2 de 5: comprueba el funcionamiento del software.
Test de validación
Etapa 4 de 5: comprueba que el producto cumple antes de ir a producción.

Entornos

Staging
Entorno previo a producción donde se verifica el build validado (ensayo general).
Entorno de copia
Réplica donde las pruebas de integración verifican la integridad antes de liberar (Diap. 9).
Producción
Entorno final que usan los usuarios.

Herramientas

GitHub Actions
CI/CD dentro de GitHub; usa archivos YAML para automatizar todo.
Jenkins
Open-source, muy potente y extensible, aunque requiere más configuración. En el ∞: RELEASE.
Travis CI
Fácil de usar, muy usado con GitHub; ideal para proyectos open-source.
YAML
Formato de texto de configuración que usa GitHub Actions para definir los flujos.
Confluence · Jira · Git
Herramientas de la zona CODE (documentar, planificar tareas, versionar).
sbt · Maven
Herramientas de BUILD (sbt = Scala Build Tool; Maven para Java).
Selenium · JUnit
Herramientas de TEST (navegador y pruebas unitarias).
Jenkins · Codeship
Herramientas de RELEASE.
DC/OS · Docker · AWS
Tecnologías de DEPLOY (centro de datos, contenedores, nube).
Chef · Ansible · Kubernetes
Tecnologías de OPERATE (configuración y orquestación).
Nagios · Splunk · Datadog
Tecnologías de MONITOR (alertas, logs, métricas).