Saltar al contenido principal

Subidas

Una de las operaciones principales de rac-delta es la subida de nuevas versiones de tus builds o directorios, y aplicar solo los chunks modificados o eliminar chunks obsoletos desde el almacenamiento remoto.

Puedes usar rac-delta para actualizar una build o para subir una build completamente nueva a tu almacenamiento.

Pipeline de subida

Para esto, el SDK de rac-delta proporciona una pipeline de subida que ya implementa todos los pasos para subir automáticamente nuevas builds a tu almacenamiento.

Uso básico de la pipeline:


const remoteIndexToUse = undefined;

await racDeltaClient.pipelines.upload.execute('path/to/build', remoteIndexToUse, {
requireRemoteIndex: false,
force: false,
ignorePatterns: undefined,
onStateChange: (state) => {
console.log(state);
},
onProgress: (type, progress, speed) => {
console.log(type, progress.toFixed(1), speed?.toFixed(1));
},
});

Parámetros:

NombreTipoDescripción
rutastringLa ruta a tu build local que será subida (ruta relativa o absoluta)
rd-index remotoRDIndexEl rd-index.json como objeto RDIndex que será usado como índice remoto, si no se proporciona ninguno, la pipeline intentará descargarlo desdde el almacenamiento.
opciones de subidaUploadOptions
Parámetro Tipo Descripción
requireRemoteIndex boolean Si es false, no lanzará error si no se encuentra índice remoto y subirá todo.
force boolean Si es true, subirá todo excepto los patrones ignorados
ignorePatterns string[] Archivos o directorios a ignorar en la generación del rd-index.json. Ejemplo: '*.zip' o 'dir/**'
onStateChange(state: UploadState) => void Callback que notificará cuando la pipeline cambia de estado. Los estados disponibles son: uploading, comparing, cleaning, scanning y finalizing
onProgress(type: "upload" | "deleting", progress: number, speed?: numberCallback que notificará el progreso de las operaciones de subida. Notificará el progreso de subida y velocidad de red, y el progreso de eliminación de chunks remotos.

Esto generará automáticamente tu rd-index.json local, descargará el rd-index.json remoto si no se ha proporcionado ninguno, comparará ambos índices, generará el Delta Plan y subirá y limpiará los nuevos chunks a tu almacenamiento configurado en el cliente de rac-delta.

Métodos auxiliares de la pipeline

Para poder subir correctamente los directorios usando rac-delta, la pipeline de subida usa métodos internos que usan los servicios de rac-delta para subir, comparar índices, eliminar chunks obsoletos, etc...

Si no quieres usar el método execute por defecto, puedes crear tu propia pipeline usando estos métodos auxiliares y los servicios.

Ejemplo de uso de los métodos auxiliares de pipeline de subida:


const racDeltaClient = await RacDeltaClient.create({
chunkSize: 1024 * 1024,
maxConcurrency: 6,
storage: {
type: 'ssh',
host: 'localhost',
pathPrefix: '/root/upload',
port: 2222,
credentials: {
username: 'root',
password: 'password',
},
},
});

const remoteIndex = fetch('my/api/or/my/storage/rd-index.json');

// Generamos el rd-index.json local (podrías usar racDeltaClient.delta.createIndexFromDirectory también)
const localIndex = await racDeltaClient.pipelines.upload.scanDirectory('my/build');

// Generamos el DeltaPlan comparando ambos índices
const deltaPlan = await racDeltaClient.delta.compareForUpload(localIndex, remoteIndex);

// Subimos los nuevos chunks (usa maxConcurrency del cliente)
await racDeltaClient.pipelines.upload.uploadMissingChunks(deltaPlan, 'my/build', false);

// ... Borrar chunks obsoletos, subir nuevo índice... etc

Para una lista completa de los métodos auxiliares echa un ojo a: pipelines. Y también a DeltaPlan