parameterize s3

pull/479/head
Frostebite 2023-01-20 16:49:46 +00:00
parent 563193a61f
commit a80ebf6ac7
3 changed files with 41 additions and 38 deletions

38
dist/index.js vendored
View File

@ -5537,15 +5537,10 @@ class SharedWorkspaceLocking {
} }
static DoesWorkspaceTopLevelExist(buildParametersContext) { static DoesWorkspaceTopLevelExist(buildParametersContext) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
try { yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceBucketRoot}`);
yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceBucketRoot}`); return (yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}`))
return (yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}`)) .map((x) => x.replace(`/`, ``))
.map((x) => x.replace(`/`, ``)) .includes(buildParametersContext.cacheKey);
.includes(buildParametersContext.cacheKey);
}
catch (_a) {
return false;
}
}); });
} }
static GetAllLocks(workspace, buildParametersContext) { static GetAllLocks(workspace, buildParametersContext) {
@ -5563,19 +5558,24 @@ class SharedWorkspaceLocking {
if (!cloud_runner_options_1.default.retainWorkspaces) { if (!cloud_runner_options_1.default.retainWorkspaces) {
return; return;
} }
if (yield SharedWorkspaceLocking.DoesWorkspaceTopLevelExist(buildParametersContext)) { try {
const workspaces = yield SharedWorkspaceLocking.GetFreeWorkspaces(buildParametersContext); if (yield SharedWorkspaceLocking.DoesWorkspaceTopLevelExist(buildParametersContext)) {
cloud_runner_logger_1.default.log(`run agent ${runId} is trying to access a workspace, free: ${JSON.stringify(workspaces)}`); const workspaces = yield SharedWorkspaceLocking.GetFreeWorkspaces(buildParametersContext);
for (const element of workspaces) { cloud_runner_logger_1.default.log(`run agent ${runId} is trying to access a workspace, free: ${JSON.stringify(workspaces)}`);
yield new Promise((promise) => setTimeout(promise, 1000)); for (const element of workspaces) {
const lockResult = yield SharedWorkspaceLocking.LockWorkspace(element, runId, buildParametersContext); yield new Promise((promise) => setTimeout(promise, 1000));
cloud_runner_logger_1.default.log(`run agent: ${runId} try lock workspace: ${element} result: ${lockResult}`); const lockResult = yield SharedWorkspaceLocking.LockWorkspace(element, runId, buildParametersContext);
if (lockResult) { cloud_runner_logger_1.default.log(`run agent: ${runId} try lock workspace: ${element} result: ${lockResult}`);
cloud_runner_1.default.lockedWorkspace = element; if (lockResult) {
return true; cloud_runner_1.default.lockedWorkspace = element;
return true;
}
} }
} }
} }
catch (_a) {
return;
}
const createResult = yield SharedWorkspaceLocking.CreateWorkspace(workspace, buildParametersContext, runId); const createResult = yield SharedWorkspaceLocking.CreateWorkspace(workspace, buildParametersContext, runId);
cloud_runner_logger_1.default.log(`run agent ${runId} didn't find a free workspace so created: ${workspace} createWorkspaceSuccess: ${createResult}`); cloud_runner_logger_1.default.log(`run agent ${runId} didn't find a free workspace so created: ${workspace} createWorkspaceSuccess: ${createResult}`);
return createResult; return createResult;

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -23,15 +23,11 @@ export class SharedWorkspaceLocking {
).map((x) => x.replace(`/`, ``)); ).map((x) => x.replace(`/`, ``));
} }
public static async DoesWorkspaceTopLevelExist(buildParametersContext: BuildParameters) { public static async DoesWorkspaceTopLevelExist(buildParametersContext: BuildParameters) {
try { await SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceBucketRoot}`);
await SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceBucketRoot}`);
return (await SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}`)) return (await SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}`))
.map((x) => x.replace(`/`, ``)) .map((x) => x.replace(`/`, ``))
.includes(buildParametersContext.cacheKey); .includes(buildParametersContext.cacheKey);
} catch {
return false;
}
} }
public static async GetAllLocks(workspace: string, buildParametersContext: BuildParameters): Promise<string[]> { public static async GetAllLocks(workspace: string, buildParametersContext: BuildParameters): Promise<string[]> {
if (!(await SharedWorkspaceLocking.DoesWorkspaceExist(workspace, buildParametersContext))) { if (!(await SharedWorkspaceLocking.DoesWorkspaceExist(workspace, buildParametersContext))) {
@ -54,20 +50,27 @@ export class SharedWorkspaceLocking {
if (!CloudRunnerOptions.retainWorkspaces) { if (!CloudRunnerOptions.retainWorkspaces) {
return; return;
} }
if (await SharedWorkspaceLocking.DoesWorkspaceTopLevelExist(buildParametersContext)) {
const workspaces = await SharedWorkspaceLocking.GetFreeWorkspaces(buildParametersContext);
CloudRunnerLogger.log(`run agent ${runId} is trying to access a workspace, free: ${JSON.stringify(workspaces)}`);
for (const element of workspaces) {
await new Promise((promise) => setTimeout(promise, 1000));
const lockResult = await SharedWorkspaceLocking.LockWorkspace(element, runId, buildParametersContext);
CloudRunnerLogger.log(`run agent: ${runId} try lock workspace: ${element} result: ${lockResult}`);
if (lockResult) { try {
CloudRunner.lockedWorkspace = element; if (await SharedWorkspaceLocking.DoesWorkspaceTopLevelExist(buildParametersContext)) {
const workspaces = await SharedWorkspaceLocking.GetFreeWorkspaces(buildParametersContext);
CloudRunnerLogger.log(
`run agent ${runId} is trying to access a workspace, free: ${JSON.stringify(workspaces)}`,
);
for (const element of workspaces) {
await new Promise((promise) => setTimeout(promise, 1000));
const lockResult = await SharedWorkspaceLocking.LockWorkspace(element, runId, buildParametersContext);
CloudRunnerLogger.log(`run agent: ${runId} try lock workspace: ${element} result: ${lockResult}`);
return true; if (lockResult) {
CloudRunner.lockedWorkspace = element;
return true;
}
} }
} }
} catch {
return;
} }
const createResult = await SharedWorkspaceLocking.CreateWorkspace(workspace, buildParametersContext, runId); const createResult = await SharedWorkspaceLocking.CreateWorkspace(workspace, buildParametersContext, runId);