Mejorando la velocidad de tus CI/CD en Azure DevOps con Cache@2

David

Introducción

En el mundo del desarrollo de software, cada minuto cuenta. Cuando usamos pipelines para integración continua (CI) o entrega continua (CD), especialmente con muchos paquetes, dependencias o compilaciones complejas, parte del tiempo se va en tareas repetitivas: restaurar dependencias, compilar, instalar módulos, etc.
Azure Pipelines nos brinda una herramienta para acelerar estos procesos: la tarea Cache v2 (Cache@2), que permite almacenar en caché archivos entre ejecuciones de pipeline y reutilizar esos archivos en vez de descargarlos o recrearlos cada vez.

¿Qué es Cache@2 y para qué sirve?

La tarea Cache@2 es una función del servicio de pipelines de Azure DevOps que permite almacenar en caché (guardar) ciertos ficheros o carpetas (por ejemplo dependencias, módulos, compilaciones previas) al final de una ejecución de pipeline, y restaurarlos al inicio de la siguiente ejecución si la “clave” de caché coincide.

¿Por qué usarla?

Evita volver a descargar o reconstruir las mismas dependencias o módulos en cada ejecución, lo que reduce el tiempo del pipeline.

Especialmente útil cuando se usa un “agente efímero” (un contenedor o máquina virtual que se crea para cada ejecución), donde no hay caché persistente entre ejecuciones.

Puede hacer más eficiente la automatización, liberar a los desarrolladores de esperas innecesarias, y permitir ciclos de ejecución más rápidos.

¿Cómo se configura?

La tarea se declara en tu archivo YAML de pipeline (o en pipeline clásico, aunque el uso más común es en YAML). Aquí están los elementos clave:

Parámetros explicados

key: Obligatorio. Es la clave que identifica la caché. Puede incluir segmentos separados por |, como sistema operativo, herramienta, nombre de lock-file, etc.

path: Obligatorio. Ruta de la carpeta que quieres guardar/recuperar. Puede ser absoluta o relativa a  $(HOME)/.m2/repository (o rutas relativas al workspace).

cacheHitVar: Opcional. Nombre de una variable que se setea a true si la caché fue restaurada (acierto), inexact si fue restaurada mediante una clave de restauración (partial hit), o false si fue fallo (miss).

restoreKeys: Opcional. Una lista (una por línea) de claves “prefijo” a usar si la clave principal falla. Esto permite restaurar una caché “aproximada” si la clave exacta no se encuentra

Buenas prácticas para la Key

Incluir algo que cambie cuando las dependencias cambien (por ejemplo archivo package-lock.json, yarn.lock, Gemfile.lock, etc). Esto asegura que cuando cambio de dependencias, se invalide la caché anterior.

Evitar que la clave sea excesivamente larga o con muchos segmentos irrelevantes.

Usar restoreKeys para tener fallback; por ejemplo primero clave completa, luego prefijo que solo incluye herramienta + OS para reutilizar caché aunque haya cambios menores.

Evitar que la clave sea excesivamente larga o con muchos segmentos irrelevantes; podría aumentar la probabilidad de “cache misses”.

Conclusión

La tarea Cache@2 es una herramienta muy valiosa para quienes usan Azure Pipelines y buscan optimizar sus tiempos de build/CI. Si se configura correctamente, puede aportar mejoras reales en velocidad, eficiencia y coste operativo. No es una “solución mágica” para todos los escenarios—pero cuando se aplica de forma adecuada, tiene impacto significativo.

David Guzmán López

Ingeniero Electrónico

Electronic Engineer | DevOps Engineer | SRE | Cloud Engineer | Infrastructure Engineer