RECURSOS CLOUD
CI/CD: conceptos
Comprende cómo integrar, validar, entregar y desplegar software mediante pipelines automatizados.
GUÍA DE CONSULTA
¿Qué es CI/CD?
CI/CDreúne un conjunto de prácticas destinadas a automatizar la integración, validación, preparación y publicación del software.
Su objetivo es que los cambios realizados sobre el código puedan avanzar de forma repetible, verificable y controladadesde el repositorio hasta los distintos entornos de ejecución.
Un flujo simplificado puede representarse así:
Código
→ Integración
→ Construcción
→ Pruebas
→ Entrega
→ DespliegueLa automatización de estas etapas permite detectar errores antes, reducir tareas manuales y mantener un proceso de publicación consistente.
INTEGRACIÓN CONTINUA
Continuous Integration (CI)
La integración continuaconsiste en incorporar con frecuencia los cambios realizados por los desarrolladores a un repositorio compartido y comprobar automáticamente que esos cambios pueden integrarse correctamente.
Cuando se produce un evento determinado —por ejemplo, un pusho una pull request— puede iniciarse automáticamente un proceso que construya el proyecto y ejecute diferentes comprobaciones.
Cambio de código
↓
Commit
↓
Push
↓
Build
↓
Tests
↓
ResultadoEtapas habituales
Obtención del código.El sistema recupera del repositorio la versión que debe validar.
Instalación de dependencias.Se preparan las bibliotecas, paquetes y herramientas necesarias para construir o ejecutar el proyecto.
Construcción (build).Cuando la tecnología lo requiere, el código se compila o empaqueta para comprobar que puede generarse correctamente.
Pruebas automatizadas.Se ejecutan pruebas para detectar errores introducidos por los cambios.
Análisis de calidad.El pipeline puede incorporar linters, análisis estático, comprobaciones de estilo o controles de seguridad.
Generación de artefactos.Si las comprobaciones finalizan correctamente, puede producirse un paquete, ejecutable, imagen de contenedor u otro elemento preparado para su distribución.
La idea fundamental de la integración continua es obtener feedback rápido. Si un cambio provoca un error, el equipo debería conocerlo lo antes posible.
Ejemplo de proceso
Ante un nuevo push, un proceso de CI podría realizar automáticamente:
1. Descargar el código
2. Instalar dependencias
3. Compilar el proyecto
4. Ejecutar las pruebas
5. Analizar la calidad del código
6. Generar el artefactoSi alguna de las comprobaciones obligatorias falla, el pipeline puede detenerse y evitar que el cambio continúe hacia las siguientes fases.
CONTINUOUS DELIVERY / DEPLOYMENT
Entrega y despliegue continuo
Las siglas CDpueden hacer referencia a dos conceptos relacionados pero diferentes: Continuous Deliveryy Continuous Deployment.
Entrega continua — Continuous Delivery
La entrega continuaextiende la integración continua y mantiene el software en un estado en el que puede ser desplegado.
Después de superar las compilaciones, pruebas y controles establecidos, se genera una versión preparada para su publicación. El paso a producción puede requerir una decisión o aprobación manual.
Código
↓
Integración
↓
Build
↓
Pruebas
↓
Versión preparada
↓
Aprobación
↓
ProducciónDespliegue continuo — Continuous Deployment
En el despliegue continuo, los cambios que superan correctamente las etapas y controles definidos pueden publicarse automáticamente en producción.
Código
↓
Integración
↓
Build
↓
Pruebas
↓
Controles
↓
Producción automáticaDiferencias principales
| Práctica | Resultado |
|---|---|
| Continuous Integration | Los cambios se integran y validan automáticamente. |
| Continuous Delivery | El software queda preparado para desplegarse. |
| Continuous Deployment | El software puede desplegarse automáticamente en producción. |
Por tanto, entrega continuay despliegue continuono son exactamente lo mismo, aunque ambos formen parte de las prácticas asociadas a CI/CD.
AUTOMATIZACIÓN
Pipelines y controles
Un pipelinerepresenta de forma automatizada la secuencia de tareas que debe superar un cambio de software.
Cada plataforma utiliza su propia terminología, pero es habitual encontrar conceptos equivalentes a los siguientes.
Workflow.Define un proceso automatizado completo.
Stage.Representa una fase lógica del proceso, como construcción, pruebas o despliegue.
Job.Agrupa tareas que se ejecutan como parte del pipeline.
Step.Representa una acción concreta dentro de un trabajo.
Trigger.Es el evento o condición que inicia el proceso automatizado.
PUSH
│
▼
BUILD
│
▼
TEST
│
▼
QUALITY CHECK
│
▼
PACKAGE
│
▼
DEPLOYNo todos los proyectos necesitan todas estas etapas. El pipeline debe adaptarse a las características, riesgos y necesidades del software.
Condiciones
Los pipelines pueden utilizar condiciones para decidir qué acciones deben ejecutarse según el evento, la rama o el estado del proceso.
Push a rama de desarrollo
↓
Build + Tests
Push a rama principal
↓
Build + Tests + Package
Versión etiquetada
↓
Build + Tests + Package + DeployArtefactos
Un artefactoes un resultado generado durante el pipeline que puede conservarse o utilizarse en etapas posteriores.
Algunos ejemplos son:
- paquetes compilados;
- archivos ejecutables;
- informes de pruebas;
- documentación generada;
- imágenes de contenedores.
Una práctica habitual consiste en generar una vez el artefacto y promover ese mismo artefacto entre entornos, evitando generar versiones diferentes del software para cada despliegue.
Variables y secretos
Los pipelines suelen necesitar información de configuración. Las variablespueden almacenar valores como nombres de entorno, rutas o parámetros de construcción.
Los datos sensibles —como contraseñas, tokens o claves— deben gestionarse mediante los mecanismos específicos de secretosproporcionados por la plataforma, evitando incorporarlos directamente al código fuente o a la configuración pública del pipeline.
CALIDAD Y SEGURIDAD
Controles antes del despliegue
Automatizar un despliegue no significa eliminar los controles. El pipeline permite establecer comprobaciones sistemáticas antes de que una versión pueda avanzar.
Entre estas comprobaciones pueden encontrarse:
- compilación correcta;
- pruebas unitarias;
- pruebas de integración;
- análisis estático;
- comprobación de dependencias;
- análisis de vulnerabilidades;
- validación del artefacto;
- aprobación manual cuando sea necesaria.
Estas comprobaciones pueden actuar como quality gateso puertas de calidad:
¿Compila?
↓ sí
¿Supera las pruebas?
↓ sí
¿Supera los controles de calidad?
↓ sí
¿Cumple las condiciones de despliegue?
↓ sí
DESPLEGARUn fallo en cualquiera de las comprobaciones obligatorias puede impedir que la versión avance a la siguiente etapa.
CICLO DE DESPLIEGUE
Entornos
Un pipeline puede trabajar con distintos entornos durante el ciclo de vida de una aplicación.
Desarrollo
→ Pruebas
→ Preproducción
→ ProducciónCada entorno cumple una finalidad diferente y puede disponer de sus propias variables, secretos, permisos y reglas de despliegue.
La separación entre entornos ayuda a evitar que una modificación todavía no validada llegue directamente a producción.
EJEMPLO PRÁCTICO
Pipeline con GitHub Actions
GitHub Actions permite definir workflows de automatización asociados a un repositorio.
Los archivos de workflow se almacenan normalmente en:
.github/workflows/El siguiente ejemplo representa un proceso sencillo de integración continua para un proyecto Java con Maven:
name: CI
on:
push:
pull_request:
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Obtener código
uses: actions/checkout@v7
- name: Configurar Java
uses: actions/setup-java@v6
with:
distribution: temurin
java-version: '21'
- name: Ejecutar pruebas
run: mvn testEn este ejemplo, ondetermina los eventos que activan el workflow y jobscontiene los trabajos que deben ejecutarse.
runs-onespecifica el entorno utilizado por el runner, mientras que stepscontiene las acciones y comandos ejecutados dentro del trabajo.
Este workflow implementa un proceso básico de integración continua, pero todavía no despliega la aplicación. Para construir un pipeline de CD habría que incorporar las etapas necesarias para empaquetar, publicar y, cuando proceda, desplegar el software.
RECOMENDACIONES
Buenas prácticas
Un pipeline debería ser automatizado, reproducible y observable. Conviene mantener su configuración junto al código cuando la plataforma lo permita y ejecutar las comprobaciones más rápidas en las primeras etapas.
- Automatizar las tareas repetitivas y reducir los pasos manuales innecesarios.
- Ejecutar las comprobaciones rápidas antes que las más costosas.
- Detener el pipeline cuando falle una validación obligatoria.
- Mantener separados el código, la configuración y los secretos.
- Aplicar el principio de mínimo privilegio a las credenciales utilizadas por la automatización.
- Conservar los logs y resultados necesarios para diagnosticar errores.
- Promover el mismo artefacto validado entre los diferentes entornos siempre que sea posible.
- Disponer de una estrategia para recuperar una versión estable cuando un despliegue presente problemas.
El objetivo no es construir el pipeline con más etapas posible, sino disponer de un proceso sencillo, fiable y adecuado al proyecto.
IDEAS CLAVE
Resumen
DESARROLLADOR
│
▼
REPOSITORIO
│
▼
CI
Build + Test
│
▼
ARTEFACTO
│
▼
CONTINUOUS DELIVERY
Listo para desplegar
│
▼
APROBACIÓN
│
▼
PRODUCCIÓNEn un modelo de Continuous Deployment, la transición hacia producción puede automatizarse cuando la versión supera todos los controles establecidos.
CIautomatiza principalmente la integración y validación de los cambios. Continuous Deliverymantiene una versión preparada para desplegar, mientras que Continuous Deploymentpermite automatizar también su publicación en producción.
RECURSOS RELACIONADOS
Recursos relacionados
PARA AMPLIAR
Documentación de referencia
Documentación oficial para ampliar los conceptos y consultar la sintaxis y posibilidades de automatización de GitHub Actions.