2024-06-10 10:56:20 -07:00
|
|
|
import * as core from '@actions/core'
|
|
|
|
|
import {GetCacheBlobUploadURLResponse} from '../../../generated/results/api/v1/blobcache'
|
2024-06-10 11:01:01 -07:00
|
|
|
import {BlobClient, BlockBlobClient, BlockBlobParallelUploadOptions} from '@azure/storage-blob'
|
2024-06-10 10:56:20 -07:00
|
|
|
|
|
|
|
|
export async function UploadCache(
|
|
|
|
|
uploadURL: GetCacheBlobUploadURLResponse,
|
|
|
|
|
archivePath: string,
|
|
|
|
|
): Promise<{}> {
|
|
|
|
|
core.debug(`Uploading cache to: ${uploadURL}`)
|
|
|
|
|
|
|
|
|
|
// Specify data transfer options
|
|
|
|
|
const uploadOptions: BlockBlobParallelUploadOptions = {
|
|
|
|
|
blockSize: 4 * 1024 * 1024, // 4 MiB max block size
|
|
|
|
|
concurrency: 2, // maximum number of parallel transfer workers
|
|
|
|
|
maxSingleShotSize: 8 * 1024 * 1024, // 8 MiB initial transfer size
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Create blob client from container client
|
2024-06-10 11:01:01 -07:00
|
|
|
// const blobClient: BlobClient = new BlobClient(uploadURL.urls[0])
|
|
|
|
|
const blobClient: BlobClient = new BlobClient(uploadURL.urls[0].url)
|
|
|
|
|
const blockBlobClient: BlockBlobClient = blobClient.getBlockBlobClient()
|
2024-06-10 10:56:20 -07:00
|
|
|
|
2024-06-10 11:01:01 -07:00
|
|
|
return blockBlobClient.uploadFile(archivePath, uploadOptions);
|
2024-06-10 10:56:20 -07:00
|
|
|
}
|