Max workspaces and strong consistency locks

pull/437/head
Frostebite 2022-10-18 19:15:49 +01:00
parent 333efe3660
commit 6beb4d0ba9
3 changed files with 12 additions and 7 deletions

5
dist/index.js vendored
View File

@ -5113,12 +5113,15 @@ const cloud_runner_options_1 = __importDefault(__nccwpck_require__(96552));
class SharedWorkspaceLocking { class SharedWorkspaceLocking {
static GetAllWorkspaces(buildParametersContext) { static GetAllWorkspaces(buildParametersContext) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
if (!(yield SharedWorkspaceLocking.DoesWorkspaceTopLevelExist(buildParametersContext))) {
return [];
}
return (yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/`)).map((x) => x.replace(`/`, ``)); return (yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/`)).map((x) => x.replace(`/`, ``));
}); });
} }
static DoesWorkspaceTopLevelExist(buildParametersContext) { static DoesWorkspaceTopLevelExist(buildParametersContext) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
const results = (yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}`)).map((x) => x.replace(`/`, ``)); const results = (yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}`)).map((x) => x.replace(`/`, ``));
return results.includes(buildParametersContext.cacheKey); return results.includes(buildParametersContext.cacheKey);
}); });
} }

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -6,6 +6,10 @@ import BuildParameters from '../../build-parameters';
export class SharedWorkspaceLocking { export class SharedWorkspaceLocking {
private static readonly workspaceRoot = `s3://game-ci-test-storage/locks/`; private static readonly workspaceRoot = `s3://game-ci-test-storage/locks/`;
public static async GetAllWorkspaces(buildParametersContext: BuildParameters): Promise<string[]> { public static async GetAllWorkspaces(buildParametersContext: BuildParameters): Promise<string[]> {
if (!(await SharedWorkspaceLocking.DoesWorkspaceTopLevelExist(buildParametersContext))) {
return [];
}
return ( return (
await SharedWorkspaceLocking.ReadLines( await SharedWorkspaceLocking.ReadLines(
`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/`, `aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/`,
@ -13,11 +17,9 @@ export class SharedWorkspaceLocking {
).map((x) => x.replace(`/`, ``)); ).map((x) => x.replace(`/`, ``));
} }
public static async DoesWorkspaceTopLevelExist(buildParametersContext: BuildParameters) { public static async DoesWorkspaceTopLevelExist(buildParametersContext: BuildParameters) {
const results = ( const results = (await SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}`)).map(
await SharedWorkspaceLocking.ReadLines( (x) => x.replace(`/`, ``),
`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}`, );
)
).map((x) => x.replace(`/`, ``));
return results.includes(buildParametersContext.cacheKey); return results.includes(buildParametersContext.cacheKey);
} }