Fixtures de prueba S3 para CI — Montar Amazon S3 como unidad con NetDrive

6 min de lectura use-case amazon-s3 windows
Alex
AlexPrincipal Engineer
Monta Amazon S3 como una letra de unidad local para que los fixtures de prueba de CI funcionen con rutas de archivo normales. Un caso de uso de NetDrive para equipos DevOps en Windows y macOS.

Un equipo de backend almacena 40 GB de fixtures de prueba binarios en Amazon S3: instantáneas de bases de datos, archivos multimedia prerrenderizados y grandes conjuntos de datos de referencia. Su suite de integración los lee como rutas de archivo normales. Cada vez que un fixture cambia, el flujo de trabajo antiguo es el mismo: aws s3 cp descarga gigabytes a cada ejecutor de CI, y cualquiera que dispare un pipeline espera 25 minutos antes de que las pruebas siquiera empiecen. Montar el bucket de S3 como una unidad local con NetDrive elimina por completo esa copia: las pruebas leen directamente desde S3 a través de una ruta como T:\fixtures\, sin ningún paso de descarga local.

NetDrive drive manager showing Google Drive, S3 and pCloud mounted as drive lettersMounted clouds appearing as native drives in Windows File Explorer

Monta S3 como una letra de unidad — sin descargas, sin cambios de código

NetDrive hace que Google Drive, OneDrive, S3, SFTP, WebDAV y más aparezcan como unidades nativas en Windows y macOS — sin sincronizar, sin descargas completas.

  • Cualquier app que lea una ruta de archivo funciona automáticamente
  • El montaje automático al arrancar deja la unidad lista antes de cualquier inicio de sesión
  • Wasabi y MinIO funcionan igual que Amazon S3
WindowsmacOS
Descargar NetDrive →

Prueba gratuita. Planes de por vida y de suscripción disponibles.

Por qué la compatibilidad de rutas de archivo importa en CI

La mayoría de las suites de prueba están escritas para leer fixtures desde una ruta local. Cambiar cada referencia de fixture a una URL de S3 implica tocar decenas de archivos y potencialmente romper también la experiencia del desarrollador local. La solución más limpia es hacer que S3 parezca una unidad local para que las rutas existentes sigan funcionando sin modificación.

NetDrive monta un bucket de S3 como volumen de unidad de red, unidad de solo lectura o disco local, según lo que necesite el ejecutor de CI. En Windows, esto se convierte en una letra de unidad (T:, S:, etc.) que cualquier proceso de la máquina puede leer. En macOS, aparece como un volumen FUSE en /Volumes/ o en una ruta personalizada. La suite de pruebas ve un sistema de archivos; NetDrive gestiona las llamadas a la API de S3 en segundo plano.

Los archivos de fixtures grandes funcionan de forma fiable porque NetDrive transmite los datos en fragmentos y reintenta automáticamente ante fallos de red. Los archivos de más de 5 GB usan transferencias multiparte de S3 (disponibles desde NetDrive 3.5.434), por lo que no hay un límite práctico de tamaño de fixture.

Amazon S3 provider logo for mounting S3 buckets as drives via NetDrive

Configurar un bucket de S3 como unidad

  1. Abre NetDrive y haz clic en + Add Drive en el Drive Manager.
  2. Elige Amazon S3 de la lista de proveedores.
  3. Introduce tu AWS Access Key ID y Secret Access Key. Usa un rol de IAM dedicado con privilegios mínimos: solo lectura para buckets de fixtures, y permisos de escritura únicamente donde las pruebas generen artefactos.
  4. Introduce el Bucket Name. Desde NetDrive 3.19.7, la región se detecta automáticamente a partir de la configuración del bucket, así que puedes dejar el campo de región en blanco salvo que necesites anularlo.
  5. En Drive Type, elige Network drive para un montaje estándar de lectura-escritura, o Read-only drive si los ejecutores de CI nunca deben escribir de vuelta en el bucket de fixtures.
  6. Configura Mount on en Boot: esta es la diferencia clave respecto a la configuración en una estación de trabajo de desarrollador. El montaje al arrancar hace que la unidad esté disponible antes de que cualquier usuario inicie sesión, exactamente lo que requieren los servidores de CI sin interfaz.
  7. Haz clic en Mount.

La letra de unidad (Windows) o la ruta del volumen (macOS) queda ahora accesible para cualquier proceso de la máquina, incluido el agente de CI, sin que haya una sesión de usuario activa.

NetDrive showing cloud storage mounted as a native drive accessible in Windows Explorer

Montaje automático sin inicio de sesión — configuración de un servidor de CI sin interfaz

La opción Mount on Boot es lo que hace que NetDrive sea práctico en infraestructura de CI. La mayoría de los ejecutores de CI (agentes de Jenkins, runners autoalojados de GitHub Actions, agentes de GitLab) arrancan como servicios del sistema, no como sesiones de usuario. Una unidad que solo se monta al iniciar sesión es invisible para estos agentes.

Con el montaje al arrancar activado, la unidad de S3 está presente en cuanto el sistema operativo termina de iniciarse. El agente de CI la detecta automáticamente: sin inicio de sesión, sin script que ejecute el comando de montaje, sin condición de carrera entre el arranque del agente y la aparición de la unidad.

NetDrive auto-mount on boot without login setting, keeping drives available for system services

Para los casos en que el montaje debe ocurrir de forma programática (por ejemplo, elegir dinámicamente qué bucket montar según un nombre de rama o una variable del pipeline), NetDrive incluye nd3cmd, una herramienta de línea de comandos añadida en NetDrive 3.8.921 que permite gestionar unidades mediante scripts. Consulta el foro de soporte de NetDrive para la referencia actual de comandos de nd3cmd, ya que los indicadores exactos varían según la versión.

Cuando las pruebas generan artefactos (informes de cobertura, salidas renderizadas, resultados de benchmarks), la misma unidad montada sirve para las escrituras. El modo de carga en segundo plano de NetDrive escribe primero en una caché local y sube a S3 de forma asíncrona, de modo que el proceso de prueba no queda bloqueado esperando a que termine la carga.

NetDrive background upload progress showing asynchronous write queue to S3

S3 on-premises: MinIO y Wasabi

No todos los equipos usan AWS directamente. Algunos ejecutan MinIO en local para mantener los datos de fixtures fuera de la nube pública; otros usan Wasabi para almacenamiento en frío optimizado en costes. NetDrive admite proveedores de almacenamiento compatibles con S3 desde la versión 3.4.398 y añadió soporte explícito para MinIO en la 3.15.450.

Para conectar un endpoint compatible con S3:

  1. Haz clic en + Add Drive y elige S3 Compatible (no Amazon S3).
  2. Introduce la URL de endpoint personalizada de tu clúster de MinIO o el endpoint de región de Wasabi.
  3. Introduce el nombre del bucket y las credenciales como antes.
  4. Configura el tipo de unidad y el disparador de montaje de la misma manera.

El resto de la configuración es idéntico. Desde el punto de vista de la suite de pruebas, T:\fixtures\ es T:\fixtures\ sin importar si el almacén subyacente es AWS us-east-1, un bucket de Wasabi o un clúster de MinIO que corre en el mismo centro de datos que el ejecutor de CI.

Resumen

Montar S3 como una letra de unidad es una forma de dar acceso a los pipelines de CI a grandes bibliotecas de fixtures en almacenamiento de objetos sin cambiar una sola línea de código. La suite de pruebas sigue leyendo rutas locales; NetDrive se encarga de la traducción a S3. El montaje al arrancar garantiza que la unidad esté siempre ahí cuando el agente de CI la necesite, sin intervención manual.

Para configurar el acceso a S3 en un Mac de desarrollador, consulta Mount Amazon S3 on macOS with NetDrive. Si tu equipo también necesita un nivel de almacenamiento en frío económico para fixtures antiguos, Mount Backblaze B2 on Windows with NetDrive cubre una configuración similar con la API compatible con S3 de Backblaze.

— Alex, NetDrive