2024-06-13 03:16:59 -07:00
|
|
|
import * as core from '@actions/core'
|
|
|
|
|
import {
|
2024-09-24 03:17:44 -07:00
|
|
|
BlobClient,
|
|
|
|
|
BlockBlobClient,
|
2024-06-13 03:16:59 -07:00
|
|
|
BlockBlobParallelUploadOptions
|
|
|
|
|
} from '@azure/storage-blob'
|
|
|
|
|
|
|
|
|
|
export async function UploadCacheFile(
|
2024-10-21 05:21:32 -07:00
|
|
|
signedUploadURL: string,
|
2024-06-13 03:16:59 -07:00
|
|
|
archivePath: string,
|
|
|
|
|
): Promise<{}> {
|
2024-10-21 05:21:32 -07:00
|
|
|
// TODO: tighten the configuration and pass the appropriate user-agent
|
2024-06-13 03:16:59 -07:00
|
|
|
// Specify data transfer options
|
|
|
|
|
const uploadOptions: BlockBlobParallelUploadOptions = {
|
|
|
|
|
blockSize: 4 * 1024 * 1024, // 4 MiB max block size
|
2024-10-21 05:21:32 -07:00
|
|
|
concurrency: 4, // maximum number of parallel transfer workers
|
2024-06-13 03:16:59 -07:00
|
|
|
maxSingleShotSize: 8 * 1024 * 1024, // 8 MiB initial transfer size
|
|
|
|
|
};
|
|
|
|
|
|
2024-10-21 05:21:32 -07:00
|
|
|
const blobClient: BlobClient = new BlobClient(signedUploadURL)
|
2024-06-13 03:16:59 -07:00
|
|
|
const blockBlobClient: BlockBlobClient = blobClient.getBlockBlobClient()
|
|
|
|
|
|
2024-10-21 05:21:32 -07:00
|
|
|
core.debug(`BlobClient: ${JSON.stringify(blobClient)}`)
|
|
|
|
|
core.debug(`blockBlobClient: ${JSON.stringify(blockBlobClient)}`)
|
2024-06-13 03:16:59 -07:00
|
|
|
|
|
|
|
|
return blockBlobClient.uploadFile(archivePath, uploadOptions);
|
|
|
|
|
}
|