From a09029945fc25baa9352ebdd1a2563c8553dc392 Mon Sep 17 00:00:00 2001 From: Prajjwal Date: Mon, 15 Apr 2024 11:58:21 +0530 Subject: [PATCH] adds explicit token auth mechanism --- packages/warp-cache/package-lock.json | 5 +++-- packages/warp-cache/package.json | 3 ++- packages/warp-cache/src/cache.ts | 3 ++- packages/warp-cache/src/internal/cacheHttpClient.ts | 9 +++++++-- packages/warp-cache/src/test.ts | 13 +++++++------ 5 files changed, 21 insertions(+), 12 deletions(-) diff --git a/packages/warp-cache/package-lock.json b/packages/warp-cache/package-lock.json index d824dd26..5b357845 100644 --- a/packages/warp-cache/package-lock.json +++ b/packages/warp-cache/package-lock.json @@ -1,12 +1,12 @@ { "name": "github-actions.warp-cache", - "version": "0.3.0", + "version": "1.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "github-actions.warp-cache", - "version": "0.3.0", + "version": "1.0.0", "license": "MIT", "dependencies": { "@actions/core": "^1.10.0", @@ -19,6 +19,7 @@ "@azure/storage-blob": "^12.13.0", "@google-cloud/storage": "^7.9.0", "axios": "^1.6.2", + "google-auth-library": "^9.7.0", "semver": "^6.3.1", "uuid": "^3.3.3" }, diff --git a/packages/warp-cache/package.json b/packages/warp-cache/package.json index bd498fbe..092faa98 100644 --- a/packages/warp-cache/package.json +++ b/packages/warp-cache/package.json @@ -1,6 +1,6 @@ { "name": "github-actions.warp-cache", - "version": "1.0.0", + "version": "1.0.1", "preview": true, "description": "Github action to use WarpBuild's in-house cache offering", "keywords": [ @@ -48,6 +48,7 @@ "@azure/storage-blob": "^12.13.0", "@google-cloud/storage": "^7.9.0", "axios": "^1.6.2", + "google-auth-library": "^9.7.0", "semver": "^6.3.1", "uuid": "^3.3.3" }, diff --git a/packages/warp-cache/src/cache.ts b/packages/warp-cache/src/cache.ts index 562c592e..8eee08fb 100644 --- a/packages/warp-cache/src/cache.ts +++ b/packages/warp-cache/src/cache.ts @@ -9,6 +9,7 @@ import { listTar } from './internal/tar' import {DownloadOptions, getUploadOptions} from './options' +import {isSuccessStatusCode} from './internal/requestUtils' export class ValidationError extends Error { constructor(message: string) { @@ -281,7 +282,7 @@ export async function saveCache( cacheVersion ) - if (reserveCacheResponse?.statusCode === 400) { + if (!isSuccessStatusCode(reserveCacheResponse?.statusCode)) { throw new Error( reserveCacheResponse?.error?.message ?? `Cache size of ~${Math.round( diff --git a/packages/warp-cache/src/internal/cacheHttpClient.ts b/packages/warp-cache/src/internal/cacheHttpClient.ts index 2b545ece..8fab972f 100644 --- a/packages/warp-cache/src/internal/cacheHttpClient.ts +++ b/packages/warp-cache/src/internal/cacheHttpClient.ts @@ -31,6 +31,7 @@ import { import {multiPartUploadToGCS, uploadFileToS3} from './uploadUtils' import {CommonsGetCacheRequest} from './warpcache-ts-sdk/models/commons-get-cache-request' import {CommonsDeleteCacheRequest} from './warpcache-ts-sdk/models/commons-delete-cache-request' +import {OAuth2Client} from 'google-auth-library' const versionSalt = '1.0' @@ -206,8 +207,10 @@ export function downloadCacheStreaming( 'Unable to download cache from GCS. GCP token is not provided.' ) } + const oauth2Client = new OAuth2Client() + oauth2Client.setCredentials({access_token: gcsToken}) const storage = new Storage({ - token: gcsToken + authClient: oauth2Client }) return downloadCacheStreamingGCP(storage, archiveLocation) } @@ -345,8 +348,10 @@ export async function saveCache( } core.debug('Uploading cache') + const oauth2Client = new OAuth2Client() + oauth2Client.setCredentials({access_token: GCSAuthToken}) const storage = new Storage({ - token: GCSAuthToken + authClient: oauth2Client }) await multiPartUploadToGCS( storage, diff --git a/packages/warp-cache/src/test.ts b/packages/warp-cache/src/test.ts index 53be237b..65340121 100644 --- a/packages/warp-cache/src/test.ts +++ b/packages/warp-cache/src/test.ts @@ -7,15 +7,16 @@ process.env['WARPBUILD_CACHE_URL'] = 'https://cache.dev.warpbuild.dev' process.env['RUNNER_TEMP'] = '/Users/prajjwal/Repos/warpbuild/playground/tmp_fs' process.env['NODE_DEBUG'] = 'http' process.env['RUNNER_DEBUG'] = '1' -process.env['WARPBUILD_RUNNER_VERIFICATION_TOKEN'] = '' +process.env['WARPBUILD_RUNNER_VERIFICATION_TOKEN'] = + 'eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MTM0MTg3MzMsInJlcG8iOiJiZW5jaG1hcmtzIiwicmVwb093bmVyIjoiV2FycEJ1aWxkcyIsIngtd2FycGJ1aWxkLW9yZ2FuaXphdGlvbi1pZCI6IndmbW4wODBlaWY4cm5pd3EifQ.a435J9ccjs9V_FzQMdbwTvXOYU8hvRieYkXM7yumlWAJyxDTsq4mi3CP1Ob9y6nLEKr35TYqGwxKFSTOW1oxYQ' process.env['GITHUB_REPOSITORY'] = 'Warpbuilds/backend-cache' process.env['GITHUB_REF'] = 'refs/heads/main' -// saveCache( -// ['/Users/prajjwal/Repos/warpbuild/playground/test_fs'], -// 'test-fs-local-key', -// true -// ) +saveCache( + ['/Users/prajjwal/Repos/warpbuild/playground/test_fs'], + 'test-fs-local-key', + true +) // saveCache( // ['/Users/prajjwal/Repos/warpbuild/playground/test_fs'],