Update garbage collection interface to support olderThan, fullCache, baseDependencies

pull/437/head
Frostebite 2022-10-18 23:00:28 +01:00
parent 721ee4089f
commit 086194999e
8 changed files with 179 additions and 125 deletions

268
dist/index.js vendored
View File

@ -895,7 +895,7 @@ const task_parameter_serializer_1 = __nccwpck_require__(35346);
const core = __importStar(__nccwpck_require__(42186)); const core = __importStar(__nccwpck_require__(42186));
const test_1 = __importDefault(__nccwpck_require__(63007)); const test_1 = __importDefault(__nccwpck_require__(63007));
const local_1 = __importDefault(__nccwpck_require__(66575)); const local_1 = __importDefault(__nccwpck_require__(66575));
const local_docker_1 = __importDefault(__nccwpck_require__(55723)); const docker_1 = __importDefault(__nccwpck_require__(42802));
const github_1 = __importDefault(__nccwpck_require__(83654)); const github_1 = __importDefault(__nccwpck_require__(83654));
const shared_workspace_locking_1 = __importDefault(__nccwpck_require__(87562)); const shared_workspace_locking_1 = __importDefault(__nccwpck_require__(87562));
class CloudRunner { class CloudRunner {
@ -930,7 +930,7 @@ class CloudRunner {
CloudRunner.Provider = new test_1.default(); CloudRunner.Provider = new test_1.default();
break; break;
case 'local-docker': case 'local-docker':
CloudRunner.Provider = new local_docker_1.default(); CloudRunner.Provider = new docker_1.default();
break; break;
default: default:
CloudRunner.Provider = new local_1.default(); CloudRunner.Provider = new local_1.default();
@ -2420,7 +2420,13 @@ class AWSBuildEnvironment {
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
filter, filter,
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
previewOnly) { previewOnly,
// eslint-disable-next-line no-unused-vars
olderThan,
// eslint-disable-next-line no-unused-vars
fullCache,
// eslint-disable-next-line no-unused-vars
baseDependencies) {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
listResources() { listResources() {
@ -2798,6 +2804,129 @@ class TertiaryResourcesService {
exports.TertiaryResourcesService = TertiaryResourcesService; exports.TertiaryResourcesService = TertiaryResourcesService;
/***/ }),
/***/ 42802:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855));
const docker_1 = __importDefault(__nccwpck_require__(16934));
const __1 = __nccwpck_require__(41359);
const fs_1 = __nccwpck_require__(57147);
const cloud_runner_1 = __importDefault(__nccwpck_require__(79144));
class LocalDockerCloudRunner {
inspect() {
throw new Error('Method not implemented.');
}
watch() {
throw new Error('Method not implemented.');
}
listResources() {
throw new Error('Method not implemented.');
}
garbageCollect(
// eslint-disable-next-line no-unused-vars
filter,
// eslint-disable-next-line no-unused-vars
previewOnly,
// eslint-disable-next-line no-unused-vars
olderThan,
// eslint-disable-next-line no-unused-vars
fullCache,
// eslint-disable-next-line no-unused-vars
baseDependencies) {
throw new Error('Method not implemented.');
}
cleanup(
// eslint-disable-next-line no-unused-vars
buildGuid,
// eslint-disable-next-line no-unused-vars
buildParameters,
// eslint-disable-next-line no-unused-vars
branchName,
// eslint-disable-next-line no-unused-vars
defaultSecretsArray) { }
setup(buildGuid, buildParameters,
// eslint-disable-next-line no-unused-vars
branchName,
// eslint-disable-next-line no-unused-vars
defaultSecretsArray) {
this.buildParameters = buildParameters;
}
runTask(buildGuid, image, commands, mountdir, workingdir, environment, secrets) {
return __awaiter(this, void 0, void 0, function* () {
cloud_runner_logger_1.default.log(buildGuid);
cloud_runner_logger_1.default.log(commands);
const { workspace, actionFolder } = __1.Action;
const content = [];
for (const x of secrets) {
content.push({ name: x.EnvironmentVariable, value: x.ParameterValue });
}
for (const x of environment) {
content.push({ name: x.name, value: x.value });
}
// if (this.buildParameters?.cloudRunnerIntegrationTests) {
// core.info(JSON.stringify(content, undefined, 4));
// core.info(JSON.stringify(secrets, undefined, 4));
// core.info(JSON.stringify(environment, undefined, 4));
// }
// eslint-disable-next-line unicorn/no-for-loop
for (let index = 0; index < content.length; index++) {
if (content[index] === undefined) {
delete content[index];
}
}
let myOutput = '';
const sharedFolder = `/data/`;
// core.info(JSON.stringify({ workspace, actionFolder, ...this.buildParameters, ...content }, undefined, 4));
const entrypointFilePath = `start.sh`;
const fileContents = `#!/bin/bash
set -e
mkdir -p /github/workspace/cloud-runner-cache
mkdir -p /data/cache
cp -a /github/workspace/cloud-runner-cache/. ${sharedFolder}
${commands}
cp -a ${sharedFolder}. /github/workspace/cloud-runner-cache/
`;
fs_1.writeFileSync(`${workspace}/${entrypointFilePath}`, fileContents, {
flag: 'w',
});
if (cloud_runner_1.default.buildParameters.cloudRunnerDebug) {
cloud_runner_logger_1.default.log(`Running local-docker: \n ${fileContents}`);
}
yield docker_1.default.run(image, Object.assign({ workspace, actionFolder }, this.buildParameters), false, `chmod +x /github/workspace/${entrypointFilePath} && /github/workspace/${entrypointFilePath}`, content, {
listeners: {
stdout: (data) => {
myOutput += data.toString();
},
stderr: (data) => {
myOutput += `[LOCAL-DOCKER-ERROR]${data.toString()}`;
},
},
}, true);
return myOutput;
});
}
}
exports["default"] = LocalDockerCloudRunner;
/***/ }), /***/ }),
/***/ 21613: /***/ 21613:
@ -2878,7 +3007,13 @@ class Kubernetes {
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
filter, filter,
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
previewOnly) { previewOnly,
// eslint-disable-next-line no-unused-vars
olderThan,
// eslint-disable-next-line no-unused-vars
fullCache,
// eslint-disable-next-line no-unused-vars
baseDependencies) {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
setup(buildGuid, buildParameters, setup(buildGuid, buildParameters,
@ -3562,123 +3697,6 @@ class KubernetesTaskRunner {
exports["default"] = KubernetesTaskRunner; exports["default"] = KubernetesTaskRunner;
/***/ }),
/***/ 55723:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855));
const docker_1 = __importDefault(__nccwpck_require__(16934));
const model_1 = __nccwpck_require__(41359);
const fs_1 = __nccwpck_require__(57147);
const cloud_runner_1 = __importDefault(__nccwpck_require__(79144));
class LocalDockerCloudRunner {
inspect() {
throw new Error('Method not implemented.');
}
watch() {
throw new Error('Method not implemented.');
}
listResources() {
throw new Error('Method not implemented.');
}
garbageCollect(
// eslint-disable-next-line no-unused-vars
filter,
// eslint-disable-next-line no-unused-vars
previewOnly) {
throw new Error('Method not implemented.');
}
cleanup(
// eslint-disable-next-line no-unused-vars
buildGuid,
// eslint-disable-next-line no-unused-vars
buildParameters,
// eslint-disable-next-line no-unused-vars
branchName,
// eslint-disable-next-line no-unused-vars
defaultSecretsArray) { }
setup(buildGuid, buildParameters,
// eslint-disable-next-line no-unused-vars
branchName,
// eslint-disable-next-line no-unused-vars
defaultSecretsArray) {
this.buildParameters = buildParameters;
}
runTask(buildGuid, image, commands, mountdir, workingdir, environment, secrets) {
return __awaiter(this, void 0, void 0, function* () {
cloud_runner_logger_1.default.log(buildGuid);
cloud_runner_logger_1.default.log(commands);
const { workspace, actionFolder } = model_1.Action;
const content = [];
for (const x of secrets) {
content.push({ name: x.EnvironmentVariable, value: x.ParameterValue });
}
for (const x of environment) {
content.push({ name: x.name, value: x.value });
}
// if (this.buildParameters?.cloudRunnerIntegrationTests) {
// core.info(JSON.stringify(content, undefined, 4));
// core.info(JSON.stringify(secrets, undefined, 4));
// core.info(JSON.stringify(environment, undefined, 4));
// }
// eslint-disable-next-line unicorn/no-for-loop
for (let index = 0; index < content.length; index++) {
if (content[index] === undefined) {
delete content[index];
}
}
let myOutput = '';
const sharedFolder = `/data/`;
// core.info(JSON.stringify({ workspace, actionFolder, ...this.buildParameters, ...content }, undefined, 4));
const entrypointFilePath = `start.sh`;
const fileContents = `#!/bin/bash
set -e
mkdir -p /github/workspace/cloud-runner-cache
mkdir -p /data/cache
cp -a /github/workspace/cloud-runner-cache/. ${sharedFolder}
${commands}
cp -a ${sharedFolder}. /github/workspace/cloud-runner-cache/
`;
fs_1.writeFileSync(`${workspace}/${entrypointFilePath}`, fileContents, {
flag: 'w',
});
if (cloud_runner_1.default.buildParameters.cloudRunnerDebug) {
cloud_runner_logger_1.default.log(`Running local-docker: \n ${fileContents}`);
}
yield docker_1.default.run(image, Object.assign({ workspace, actionFolder }, this.buildParameters), false, `chmod +x /github/workspace/${entrypointFilePath} && /github/workspace/${entrypointFilePath}`, content, {
listeners: {
stdout: (data) => {
myOutput += data.toString();
},
stderr: (data) => {
myOutput += `[LOCAL-DOCKER-ERROR]${data.toString()}`;
},
},
}, true);
return myOutput;
});
}
}
exports["default"] = LocalDockerCloudRunner;
/***/ }), /***/ }),
/***/ 66575: /***/ 66575:
@ -3715,7 +3733,13 @@ class LocalCloudRunner {
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
filter, filter,
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
previewOnly) { previewOnly,
// eslint-disable-next-line no-unused-vars
olderThan,
// eslint-disable-next-line no-unused-vars
fullCache,
// eslint-disable-next-line no-unused-vars
baseDependencies) {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
cleanup( cleanup(

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -12,7 +12,7 @@ import { ProviderInterface } from './providers/provider-interface';
import CloudRunnerEnvironmentVariable from './services/cloud-runner-environment-variable'; import CloudRunnerEnvironmentVariable from './services/cloud-runner-environment-variable';
import TestCloudRunner from './providers/test'; import TestCloudRunner from './providers/test';
import LocalCloudRunner from './providers/local'; import LocalCloudRunner from './providers/local';
import LocalDockerCloudRunner from './providers/local-docker'; import LocalDockerCloudRunner from './providers/docker';
import GitHub from '../github'; import GitHub from '../github';
import SharedWorkspaceLocking from './services/shared-workspace-locking'; import SharedWorkspaceLocking from './services/shared-workspace-locking';

View File

@ -37,6 +37,12 @@ class AWSBuildEnvironment implements ProviderInterface {
filter: string, filter: string,
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
previewOnly: boolean, previewOnly: boolean,
// eslint-disable-next-line no-unused-vars
olderThan: Number,
// eslint-disable-next-line no-unused-vars
fullCache: boolean,
// eslint-disable-next-line no-unused-vars
baseDependencies: boolean,
): Promise<string> { ): Promise<string> {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }

View File

@ -4,7 +4,7 @@ import CloudRunnerLogger from '../../services/cloud-runner-logger';
import { ProviderInterface } from '../provider-interface'; import { ProviderInterface } from '../provider-interface';
import CloudRunnerSecret from '../../services/cloud-runner-secret'; import CloudRunnerSecret from '../../services/cloud-runner-secret';
import Docker from '../../../docker'; import Docker from '../../../docker';
import { Action } from '../../../../model'; import { Action } from '../../..';
import { writeFileSync } from 'fs'; import { writeFileSync } from 'fs';
import CloudRunner from '../../cloud-runner'; import CloudRunner from '../../cloud-runner';
@ -25,6 +25,12 @@ class LocalDockerCloudRunner implements ProviderInterface {
filter: string, filter: string,
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
previewOnly: boolean, previewOnly: boolean,
// eslint-disable-next-line no-unused-vars
olderThan: Number,
// eslint-disable-next-line no-unused-vars
fullCache: boolean,
// eslint-disable-next-line no-unused-vars
baseDependencies: boolean,
): Promise<string> { ): Promise<string> {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }

View File

@ -53,6 +53,12 @@ class Kubernetes implements ProviderInterface {
filter: string, filter: string,
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
previewOnly: boolean, previewOnly: boolean,
// eslint-disable-next-line no-unused-vars
olderThan: Number,
// eslint-disable-next-line no-unused-vars
fullCache: boolean,
// eslint-disable-next-line no-unused-vars
baseDependencies: boolean,
): Promise<string> { ): Promise<string> {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }

View File

@ -20,6 +20,12 @@ class LocalCloudRunner implements ProviderInterface {
filter: string, filter: string,
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
previewOnly: boolean, previewOnly: boolean,
// eslint-disable-next-line no-unused-vars
olderThan: Number,
// eslint-disable-next-line no-unused-vars
fullCache: boolean,
// eslint-disable-next-line no-unused-vars
baseDependencies: boolean,
): Promise<string> { ): Promise<string> {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }

View File

@ -45,6 +45,12 @@ export interface ProviderInterface {
filter: string, filter: string,
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
previewOnly: boolean, previewOnly: boolean,
// eslint-disable-next-line no-unused-vars
olderThan: Number,
// eslint-disable-next-line no-unused-vars
fullCache: boolean,
// eslint-disable-next-line no-unused-vars
baseDependencies: boolean,
): Promise<string>; ): Promise<string>;
inspect(): Promise<string>; inspect(): Promise<string>;
watch(): Promise<string>; watch(): Promise<string>;