Max workspaces and strong consistency locks

pull/437/head
Frostebite 2022-10-18 20:48:10 +01:00
parent b8daa46233
commit ff30712eb9
5 changed files with 12 additions and 7 deletions

9
dist/index.js vendored
View File

@ -942,7 +942,7 @@ class CloudRunner {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
CloudRunner.setup(buildParameters); CloudRunner.setup(buildParameters);
try { try {
if (cloud_runner_options_1.default.retainWorkspaces) { if (buildParameters.retainWorkspace) {
const workspace = `test-workspace-${CloudRunner.buildParameters.buildGuid}`; const workspace = `test-workspace-${CloudRunner.buildParameters.buildGuid}`;
const result = (yield shared_workspace_locking_1.default.GetOrCreateLockedWorkspace(workspace, CloudRunner.buildParameters.buildGuid, CloudRunner.buildParameters)) || CloudRunner.buildParameters.buildGuid; const result = (yield shared_workspace_locking_1.default.GetOrCreateLockedWorkspace(workspace, CloudRunner.buildParameters.buildGuid, CloudRunner.buildParameters)) || CloudRunner.buildParameters.buildGuid;
if (result) { if (result) {
@ -953,6 +953,9 @@ class CloudRunner {
{ name: `LOCKED_WORKSPACE`, value: workspace }, { name: `LOCKED_WORKSPACE`, value: workspace },
]; ];
} }
else {
buildParameters.retainWorkspace = false;
}
} }
if (!CloudRunner.buildParameters.isCliMode) if (!CloudRunner.buildParameters.isCliMode)
core.startGroup('Setup shared cloud runner resources'); core.startGroup('Setup shared cloud runner resources');
@ -4166,7 +4169,7 @@ class RemoteClient {
}); });
} }
static handleRetainedWorkspace() { static handleRetainedWorkspace() {
if (!cloud_runner_1.default.buildParameters.retainWorkspace || !cloud_runner_1.default.lockedWorkspace) { if (!cloud_runner_1.default.buildParameters.retainWorkspace) {
return; return;
} }
remote_client_logger_1.RemoteClientLogger.log(`Retained Workspace: ${cloud_runner_1.default.lockedWorkspace}`); remote_client_logger_1.RemoteClientLogger.log(`Retained Workspace: ${cloud_runner_1.default.lockedWorkspace}`);
@ -5128,7 +5131,7 @@ class SharedWorkspaceLocking {
static GetAllLocks(workspace, buildParametersContext) { static GetAllLocks(workspace, buildParametersContext) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
if (!(yield SharedWorkspaceLocking.DoesWorkspaceExist(workspace, buildParametersContext))) { if (!(yield SharedWorkspaceLocking.DoesWorkspaceExist(workspace, buildParametersContext))) {
throw new Error("Workspace doesn't exist, can't call get all locks"); return [];
} }
return (yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${workspace}/`)) return (yield SharedWorkspaceLocking.ReadLines(`aws s3 ls ${SharedWorkspaceLocking.workspaceRoot}${buildParametersContext.cacheKey}/${workspace}/`))
.map((x) => x.replace(`/`, ``)) .map((x) => x.replace(`/`, ``))

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -66,7 +66,7 @@ class CloudRunner {
static async run(buildParameters: BuildParameters, baseImage: string) { static async run(buildParameters: BuildParameters, baseImage: string) {
CloudRunner.setup(buildParameters); CloudRunner.setup(buildParameters);
try { try {
if (CloudRunnerOptions.retainWorkspaces) { if (buildParameters.retainWorkspace) {
const workspace = `test-workspace-${CloudRunner.buildParameters.buildGuid}`; const workspace = `test-workspace-${CloudRunner.buildParameters.buildGuid}`;
const result = const result =
(await SharedWorkspaceLocking.GetOrCreateLockedWorkspace( (await SharedWorkspaceLocking.GetOrCreateLockedWorkspace(
@ -83,6 +83,8 @@ class CloudRunner {
...CloudRunner.cloudRunnerEnvironmentVariables, ...CloudRunner.cloudRunnerEnvironmentVariables,
{ name: `LOCKED_WORKSPACE`, value: workspace }, { name: `LOCKED_WORKSPACE`, value: workspace },
]; ];
} else {
buildParameters.retainWorkspace = false;
} }
} }
if (!CloudRunner.buildParameters.isCliMode) core.startGroup('Setup shared cloud runner resources'); if (!CloudRunner.buildParameters.isCliMode) core.startGroup('Setup shared cloud runner resources');

View File

@ -154,7 +154,7 @@ export class RemoteClient {
} }
} }
static handleRetainedWorkspace() { static handleRetainedWorkspace() {
if (!CloudRunner.buildParameters.retainWorkspace || !CloudRunner.lockedWorkspace) { if (!CloudRunner.buildParameters.retainWorkspace) {
return; return;
} }
RemoteClientLogger.log(`Retained Workspace: ${CloudRunner.lockedWorkspace}`); RemoteClientLogger.log(`Retained Workspace: ${CloudRunner.lockedWorkspace}`);

View File

@ -25,7 +25,7 @@ export class SharedWorkspaceLocking {
} }
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))) {
throw new Error("Workspace doesn't exist, can't call get all locks"); return [];
} }
return ( return (