Update garbage collection interface to support olderThan, fullCache, baseDependencies

pull/437/head
Frostebite 2022-10-18 23:10:08 +01:00
parent 086194999e
commit 1b3e995bc4
12 changed files with 88 additions and 78 deletions

76
dist/index.js vendored
View File

@ -959,13 +959,13 @@ class CloudRunner {
}
if (!CloudRunner.buildParameters.isCliMode)
core.startGroup('Setup shared cloud runner resources');
yield CloudRunner.Provider.setup(CloudRunner.buildParameters.buildGuid, CloudRunner.buildParameters, CloudRunner.buildParameters.branch, CloudRunner.defaultSecrets);
yield CloudRunner.Provider.setupWorkflow(CloudRunner.buildParameters.buildGuid, CloudRunner.buildParameters, CloudRunner.buildParameters.branch, CloudRunner.defaultSecrets);
if (!CloudRunner.buildParameters.isCliMode)
core.endGroup();
const output = yield new workflow_composition_root_1.WorkflowCompositionRoot().run(new cloud_runner_step_state_1.CloudRunnerStepState(baseImage, CloudRunner.cloudRunnerEnvironmentVariables, CloudRunner.defaultSecrets));
if (!CloudRunner.buildParameters.isCliMode)
core.startGroup('Cleanup shared cloud runner resources');
yield CloudRunner.Provider.cleanup(CloudRunner.buildParameters.buildGuid, CloudRunner.buildParameters, CloudRunner.buildParameters.branch, CloudRunner.defaultSecrets);
yield CloudRunner.Provider.cleanupWorkflow(CloudRunner.buildParameters.buildGuid, CloudRunner.buildParameters, CloudRunner.buildParameters.branch, CloudRunner.defaultSecrets);
cloud_runner_logger_1.default.log(`Cleanup complete`);
if (!CloudRunner.buildParameters.isCliMode)
core.endGroup();
@ -1036,7 +1036,7 @@ class CloudRunnerError {
cloud_runner_logger_1.default.error(JSON.stringify(error, undefined, 4));
core.setFailed('Cloud Runner failed');
if (cloud_runner_1.default.Provider !== undefined) {
yield cloud_runner_1.default.Provider.cleanup(buildParameters.buildGuid, buildParameters, buildParameters.branch, secrets);
yield cloud_runner_1.default.Provider.cleanupWorkflow(buildParameters.buildGuid, buildParameters, buildParameters.branch, secrets);
}
});
}
@ -2398,16 +2398,17 @@ const __1 = __nccwpck_require__(41359);
const aws_cli_commands_1 = __nccwpck_require__(34340);
const tertiary_resources_service_1 = __nccwpck_require__(61627);
const task_service_1 = __nccwpck_require__(67205);
const garbage_collection_service_1 = __nccwpck_require__(53859);
class AWSBuildEnvironment {
constructor(buildParameters) {
this.baseStackName = buildParameters.awsBaseStackName;
}
inspect() {
inspectResources() {
return __awaiter(this, void 0, void 0, function* () {
return yield task_service_1.TaskService.awsDescribeJob('');
});
}
watch() {
watchWorkflow() {
throw new Error('Method not implemented.');
}
listOtherResources() {
@ -2416,26 +2417,27 @@ class AWSBuildEnvironment {
return '';
});
}
garbageCollect(
// eslint-disable-next-line no-unused-vars
filter,
// eslint-disable-next-line no-unused-vars
previewOnly,
garbageCollect(filter, 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.');
return __awaiter(this, void 0, void 0, function* () {
yield garbage_collection_service_1.GarbageCollectionService.cleanup(!previewOnly);
return ``;
});
}
listResources() {
return __awaiter(this, void 0, void 0, function* () {
yield aws_cli_commands_1.AwsCliCommands.awsListAll();
yield aws_cli_commands_1.AwsCliCommands.awsListStacks();
yield aws_cli_commands_1.AwsCliCommands.awsListTasks();
yield aws_cli_commands_1.AwsCliCommands.awsListLogGroups();
return '';
});
}
cleanup(
cleanupWorkflow(
// eslint-disable-next-line no-unused-vars
buildGuid,
// eslint-disable-next-line no-unused-vars
@ -2446,7 +2448,7 @@ class AWSBuildEnvironment {
defaultSecretsArray) {
return __awaiter(this, void 0, void 0, function* () { });
}
setup(
setupWorkflow(
// eslint-disable-next-line no-unused-vars
buildGuid,
// eslint-disable-next-line no-unused-vars
@ -2457,7 +2459,7 @@ class AWSBuildEnvironment {
defaultSecretsArray) {
return __awaiter(this, void 0, void 0, function* () { });
}
runTask(buildGuid, image, commands, mountdir, workingdir, environment, secrets) {
runTaskInWorkflow(buildGuid, image, commands, mountdir, workingdir, environment, secrets) {
return __awaiter(this, void 0, void 0, function* () {
process.env.AWS_REGION = __1.Input.region;
const ECS = new SDK.ECS();
@ -2830,10 +2832,10 @@ const __1 = __nccwpck_require__(41359);
const fs_1 = __nccwpck_require__(57147);
const cloud_runner_1 = __importDefault(__nccwpck_require__(79144));
class LocalDockerCloudRunner {
inspect() {
inspectResources() {
throw new Error('Method not implemented.');
}
watch() {
watchWorkflow() {
throw new Error('Method not implemented.');
}
listResources() {
@ -2852,7 +2854,7 @@ class LocalDockerCloudRunner {
baseDependencies) {
throw new Error('Method not implemented.');
}
cleanup(
cleanupWorkflow(
// eslint-disable-next-line no-unused-vars
buildGuid,
// eslint-disable-next-line no-unused-vars
@ -2861,14 +2863,14 @@ class LocalDockerCloudRunner {
branchName,
// eslint-disable-next-line no-unused-vars
defaultSecretsArray) { }
setup(buildGuid, buildParameters,
setupWorkflow(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) {
runTaskInWorkflow(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);
@ -2994,10 +2996,10 @@ class Kubernetes {
this.namespace = 'default';
this.buildParameters = buildParameters;
}
inspect() {
inspectResources() {
throw new Error('Method not implemented.');
}
watch() {
watchWorkflow() {
throw new Error('Method not implemented.');
}
listResources() {
@ -3016,7 +3018,7 @@ class Kubernetes {
baseDependencies) {
throw new Error('Method not implemented.');
}
setup(buildGuid, buildParameters,
setupWorkflow(buildGuid, buildParameters,
// eslint-disable-next-line no-unused-vars
branchName,
// eslint-disable-next-line no-unused-vars
@ -3035,7 +3037,7 @@ class Kubernetes {
}
});
}
runTask(buildGuid, image, commands, mountdir, workingdir, environment, secrets) {
runTaskInWorkflow(buildGuid, image, commands, mountdir, workingdir, environment, secrets) {
return __awaiter(this, void 0, void 0, function* () {
try {
// Setup
@ -3130,7 +3132,7 @@ class Kubernetes {
catch (_a) { }
});
}
cleanup(buildGuid, buildParameters,
cleanupWorkflow(buildGuid, buildParameters,
// eslint-disable-next-line no-unused-vars
branchName,
// eslint-disable-next-line no-unused-vars
@ -3720,10 +3722,10 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
const cloud_runner_system_1 = __nccwpck_require__(99393);
const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855));
class LocalCloudRunner {
inspect() {
inspectResources() {
throw new Error('Method not implemented.');
}
watch() {
watchWorkflow() {
throw new Error('Method not implemented.');
}
listResources() {
@ -3742,7 +3744,7 @@ class LocalCloudRunner {
baseDependencies) {
throw new Error('Method not implemented.');
}
cleanup(
cleanupWorkflow(
// eslint-disable-next-line no-unused-vars
buildGuid,
// eslint-disable-next-line no-unused-vars
@ -3751,7 +3753,7 @@ class LocalCloudRunner {
branchName,
// eslint-disable-next-line no-unused-vars
defaultSecretsArray) { }
setup(
setupWorkflow(
// eslint-disable-next-line no-unused-vars
buildGuid,
// eslint-disable-next-line no-unused-vars
@ -3760,7 +3762,7 @@ class LocalCloudRunner {
branchName,
// eslint-disable-next-line no-unused-vars
defaultSecretsArray) { }
runTask(buildGuid, image, commands,
runTaskInWorkflow(buildGuid, image, commands,
// eslint-disable-next-line no-unused-vars
mountdir,
// eslint-disable-next-line no-unused-vars
@ -3802,10 +3804,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
Object.defineProperty(exports, "__esModule", ({ value: true }));
const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855));
class TestCloudRunner {
inspect() {
inspectResources() {
throw new Error('Method not implemented.');
}
watch() {
watchWorkflow() {
throw new Error('Method not implemented.');
}
listResources() {
@ -3818,7 +3820,7 @@ class TestCloudRunner {
previewOnly) {
throw new Error('Method not implemented.');
}
cleanup(
cleanupWorkflow(
// eslint-disable-next-line no-unused-vars
buildGuid,
// eslint-disable-next-line no-unused-vars
@ -3827,7 +3829,7 @@ class TestCloudRunner {
branchName,
// eslint-disable-next-line no-unused-vars
defaultSecretsArray) { }
setup(
setupWorkflow(
// eslint-disable-next-line no-unused-vars
buildGuid,
// eslint-disable-next-line no-unused-vars
@ -3836,7 +3838,7 @@ class TestCloudRunner {
branchName,
// eslint-disable-next-line no-unused-vars
defaultSecretsArray) { }
runTask(commands, buildGuid, image,
runTaskInWorkflow(commands, buildGuid, image,
// eslint-disable-next-line no-unused-vars
mountdir,
// eslint-disable-next-line no-unused-vars
@ -5585,7 +5587,7 @@ class BuildAutomationWorkflow {
cloud_runner_logger_1.default.log(baseImage.toString());
cloud_runner_logger_1.default.logLine(` `);
cloud_runner_logger_1.default.logLine('Starting build automation job');
output += yield cloud_runner_1.default.Provider.runTask(cloud_runner_1.default.buildParameters.buildGuid, baseImage.toString(), BuildAutomationWorkflow.BuildWorkflow, `/${cloud_runner_folders_1.CloudRunnerFolders.buildVolumeFolder}`, `/${cloud_runner_folders_1.CloudRunnerFolders.buildVolumeFolder}/`, cloudRunnerStepState.environment, cloudRunnerStepState.secrets);
output += yield cloud_runner_1.default.Provider.runTaskInWorkflow(cloud_runner_1.default.buildParameters.buildGuid, baseImage.toString(), BuildAutomationWorkflow.BuildWorkflow, `/${cloud_runner_folders_1.CloudRunnerFolders.buildVolumeFolder}`, `/${cloud_runner_folders_1.CloudRunnerFolders.buildVolumeFolder}/`, cloudRunnerStepState.environment, cloudRunnerStepState.secrets);
if (!cloud_runner_1.default.buildParameters.isCliMode)
core.endGroup();
cloud_runner_logger_1.default.logWithTime('Build time');
@ -5696,7 +5698,7 @@ class CustomWorkflow {
cloud_runner_logger_1.default.log(`Custom Job Description \n${JSON.stringify(buildSteps, undefined, 4)}`);
}
for (const step of buildSteps) {
output += yield cloud_runner_1.default.Provider.runTask(cloud_runner_1.default.buildParameters.buildGuid, step.image, step.commands, `/${cloud_runner_folders_1.CloudRunnerFolders.buildVolumeFolder}`, `/${cloud_runner_folders_1.CloudRunnerFolders.projectPathAbsolute}/`, environmentVariables, [...secrets, ...step.secrets]);
output += yield cloud_runner_1.default.Provider.runTaskInWorkflow(cloud_runner_1.default.buildParameters.buildGuid, step.image, step.commands, `/${cloud_runner_folders_1.CloudRunnerFolders.buildVolumeFolder}`, `/${cloud_runner_folders_1.CloudRunnerFolders.projectPathAbsolute}/`, environmentVariables, [...secrets, ...step.secrets]);
}
return output;
}

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -87,7 +87,7 @@ class CloudRunner {
}
}
if (!CloudRunner.buildParameters.isCliMode) core.startGroup('Setup shared cloud runner resources');
await CloudRunner.Provider.setup(
await CloudRunner.Provider.setupWorkflow(
CloudRunner.buildParameters.buildGuid,
CloudRunner.buildParameters,
CloudRunner.buildParameters.branch,
@ -98,7 +98,7 @@ class CloudRunner {
new CloudRunnerStepState(baseImage, CloudRunner.cloudRunnerEnvironmentVariables, CloudRunner.defaultSecrets),
);
if (!CloudRunner.buildParameters.isCliMode) core.startGroup('Cleanup shared cloud runner resources');
await CloudRunner.Provider.cleanup(
await CloudRunner.Provider.cleanupWorkflow(
CloudRunner.buildParameters.buildGuid,
CloudRunner.buildParameters,
CloudRunner.buildParameters.branch,

View File

@ -9,7 +9,12 @@ export class CloudRunnerError {
CloudRunnerLogger.error(JSON.stringify(error, undefined, 4));
core.setFailed('Cloud Runner failed');
if (CloudRunner.Provider !== undefined) {
await CloudRunner.Provider.cleanup(buildParameters.buildGuid, buildParameters, buildParameters.branch, secrets);
await CloudRunner.Provider.cleanupWorkflow(
buildParameters.buildGuid,
buildParameters,
buildParameters.branch,
secrets,
);
}
}
}

View File

@ -12,6 +12,7 @@ import { Input } from '../../..';
import { AwsCliCommands } from './commands/aws-cli-commands';
import { TertiaryResourcesService } from './services/tertiary-resources-service';
import { TaskService } from './services/task-service';
import { GarbageCollectionService } from './services/garbage-collection-service';
class AWSBuildEnvironment implements ProviderInterface {
private baseStackName: string;
@ -19,10 +20,10 @@ class AWSBuildEnvironment implements ProviderInterface {
constructor(buildParameters: BuildParameters) {
this.baseStackName = buildParameters.awsBaseStackName;
}
async inspect(): Promise<string> {
async inspectResources(): Promise<string> {
return await TaskService.awsDescribeJob('');
}
watch(): Promise<string> {
watchWorkflow(): Promise<string> {
throw new Error('Method not implemented.');
}
@ -32,10 +33,8 @@ class AWSBuildEnvironment implements ProviderInterface {
return '';
}
garbageCollect(
// eslint-disable-next-line no-unused-vars
async garbageCollect(
filter: string,
// eslint-disable-next-line no-unused-vars
previewOnly: boolean,
// eslint-disable-next-line no-unused-vars
olderThan: Number,
@ -44,16 +43,20 @@ class AWSBuildEnvironment implements ProviderInterface {
// eslint-disable-next-line no-unused-vars
baseDependencies: boolean,
): Promise<string> {
throw new Error('Method not implemented.');
await GarbageCollectionService.cleanup(!previewOnly);
return ``;
}
async listResources() {
await AwsCliCommands.awsListAll();
await AwsCliCommands.awsListStacks();
await AwsCliCommands.awsListTasks();
await AwsCliCommands.awsListLogGroups();
return '';
}
async cleanup(
async cleanupWorkflow(
// eslint-disable-next-line no-unused-vars
buildGuid: string,
// eslint-disable-next-line no-unused-vars
@ -63,7 +66,7 @@ class AWSBuildEnvironment implements ProviderInterface {
// eslint-disable-next-line no-unused-vars
defaultSecretsArray: { ParameterKey: string; EnvironmentVariable: string; ParameterValue: string }[],
) {}
async setup(
async setupWorkflow(
// eslint-disable-next-line no-unused-vars
buildGuid: string,
// eslint-disable-next-line no-unused-vars
@ -74,7 +77,7 @@ class AWSBuildEnvironment implements ProviderInterface {
defaultSecretsArray: { ParameterKey: string; EnvironmentVariable: string; ParameterValue: string }[],
) {}
async runTask(
async runTaskInWorkflow(
buildGuid: string,
image: string,
commands: string,

View File

@ -11,10 +11,10 @@ import CloudRunner from '../../cloud-runner';
class LocalDockerCloudRunner implements ProviderInterface {
public buildParameters: BuildParameters | undefined;
inspect(): Promise<string> {
inspectResources(): Promise<string> {
throw new Error('Method not implemented.');
}
watch(): Promise<string> {
watchWorkflow(): Promise<string> {
throw new Error('Method not implemented.');
}
listResources(): Promise<string> {
@ -34,7 +34,7 @@ class LocalDockerCloudRunner implements ProviderInterface {
): Promise<string> {
throw new Error('Method not implemented.');
}
cleanup(
cleanupWorkflow(
// eslint-disable-next-line no-unused-vars
buildGuid: string,
// eslint-disable-next-line no-unused-vars
@ -44,7 +44,7 @@ class LocalDockerCloudRunner implements ProviderInterface {
// eslint-disable-next-line no-unused-vars
defaultSecretsArray: { ParameterKey: string; EnvironmentVariable: string; ParameterValue: string }[],
) {}
setup(
setupWorkflow(
buildGuid: string,
buildParameters: BuildParameters,
// eslint-disable-next-line no-unused-vars
@ -55,7 +55,7 @@ class LocalDockerCloudRunner implements ProviderInterface {
this.buildParameters = buildParameters;
}
public async runTask(
public async runTaskInWorkflow(
buildGuid: string,
image: string,
commands: string,

View File

@ -39,10 +39,10 @@ class Kubernetes implements ProviderInterface {
this.namespace = 'default';
this.buildParameters = buildParameters;
}
inspect(): Promise<string> {
inspectResources(): Promise<string> {
throw new Error('Method not implemented.');
}
watch(): Promise<string> {
watchWorkflow(): Promise<string> {
throw new Error('Method not implemented.');
}
listResources(): Promise<string> {
@ -62,7 +62,7 @@ class Kubernetes implements ProviderInterface {
): Promise<string> {
throw new Error('Method not implemented.');
}
public async setup(
public async setupWorkflow(
buildGuid: string,
buildParameters: BuildParameters,
// eslint-disable-next-line no-unused-vars
@ -88,7 +88,7 @@ class Kubernetes implements ProviderInterface {
}
}
async runTask(
async runTaskInWorkflow(
buildGuid: string,
image: string,
commands: string,
@ -213,7 +213,7 @@ class Kubernetes implements ProviderInterface {
} catch {}
}
async cleanup(
async cleanupWorkflow(
buildGuid: string,
buildParameters: BuildParameters,
// eslint-disable-next-line no-unused-vars

View File

@ -6,10 +6,10 @@ import { ProviderInterface } from '../provider-interface';
import CloudRunnerSecret from '../../services/cloud-runner-secret';
class LocalCloudRunner implements ProviderInterface {
inspect(): Promise<string> {
inspectResources(): Promise<string> {
throw new Error('Method not implemented.');
}
watch(): Promise<string> {
watchWorkflow(): Promise<string> {
throw new Error('Method not implemented.');
}
listResources(): Promise<string> {
@ -29,7 +29,7 @@ class LocalCloudRunner implements ProviderInterface {
): Promise<string> {
throw new Error('Method not implemented.');
}
cleanup(
cleanupWorkflow(
// eslint-disable-next-line no-unused-vars
buildGuid: string,
// eslint-disable-next-line no-unused-vars
@ -39,7 +39,7 @@ class LocalCloudRunner implements ProviderInterface {
// eslint-disable-next-line no-unused-vars
defaultSecretsArray: { ParameterKey: string; EnvironmentVariable: string; ParameterValue: string }[],
) {}
public setup(
public setupWorkflow(
// eslint-disable-next-line no-unused-vars
buildGuid: string,
// eslint-disable-next-line no-unused-vars
@ -49,7 +49,7 @@ class LocalCloudRunner implements ProviderInterface {
// eslint-disable-next-line no-unused-vars
defaultSecretsArray: { ParameterKey: string; EnvironmentVariable: string; ParameterValue: string }[],
) {}
public async runTask(
public async runTaskInWorkflow(
buildGuid: string,
image: string,
commands: string,

View File

@ -3,7 +3,7 @@ import CloudRunnerEnvironmentVariable from '../services/cloud-runner-environment
import CloudRunnerSecret from '../services/cloud-runner-secret';
export interface ProviderInterface {
cleanup(
cleanupWorkflow(
// eslint-disable-next-line no-unused-vars
buildGuid: string,
// eslint-disable-next-line no-unused-vars
@ -13,7 +13,7 @@ export interface ProviderInterface {
// eslint-disable-next-line no-unused-vars
defaultSecretsArray: { ParameterKey: string; EnvironmentVariable: string; ParameterValue: string }[],
);
setup(
setupWorkflow(
// eslint-disable-next-line no-unused-vars
buildGuid: string,
// eslint-disable-next-line no-unused-vars
@ -23,7 +23,7 @@ export interface ProviderInterface {
// eslint-disable-next-line no-unused-vars
defaultSecretsArray: { ParameterKey: string; EnvironmentVariable: string; ParameterValue: string }[],
);
runTask(
runTaskInWorkflow(
// eslint-disable-next-line no-unused-vars
buildGuid: string,
// eslint-disable-next-line no-unused-vars
@ -52,6 +52,6 @@ export interface ProviderInterface {
// eslint-disable-next-line no-unused-vars
baseDependencies: boolean,
): Promise<string>;
inspect(): Promise<string>;
watch(): Promise<string>;
inspectResources(): Promise<string>;
watchWorkflow(): Promise<string>;
}

View File

@ -5,10 +5,10 @@ import { ProviderInterface } from '../provider-interface';
import CloudRunnerSecret from '../../services/cloud-runner-secret';
class TestCloudRunner implements ProviderInterface {
inspect(): Promise<string> {
inspectResources(): Promise<string> {
throw new Error('Method not implemented.');
}
watch(): Promise<string> {
watchWorkflow(): Promise<string> {
throw new Error('Method not implemented.');
}
listResources(): Promise<string> {
@ -22,7 +22,7 @@ class TestCloudRunner implements ProviderInterface {
): Promise<string> {
throw new Error('Method not implemented.');
}
cleanup(
cleanupWorkflow(
// eslint-disable-next-line no-unused-vars
buildGuid: string,
// eslint-disable-next-line no-unused-vars
@ -32,7 +32,7 @@ class TestCloudRunner implements ProviderInterface {
// eslint-disable-next-line no-unused-vars
defaultSecretsArray: { ParameterKey: string; EnvironmentVariable: string; ParameterValue: string }[],
) {}
setup(
setupWorkflow(
// eslint-disable-next-line no-unused-vars
buildGuid: string,
// eslint-disable-next-line no-unused-vars
@ -42,7 +42,7 @@ class TestCloudRunner implements ProviderInterface {
// eslint-disable-next-line no-unused-vars
defaultSecretsArray: { ParameterKey: string; EnvironmentVariable: string; ParameterValue: string }[],
) {}
public async runTask(
public async runTaskInWorkflow(
commands: string,
buildGuid: string,
image: string,

View File

@ -33,7 +33,7 @@ export class BuildAutomationWorkflow implements WorkflowInterface {
CloudRunnerLogger.logLine(` `);
CloudRunnerLogger.logLine('Starting build automation job');
output += await CloudRunner.Provider.runTask(
output += await CloudRunner.Provider.runTaskInWorkflow(
CloudRunner.buildParameters.buildGuid,
baseImage.toString(),
BuildAutomationWorkflow.BuildWorkflow,

View File

@ -30,7 +30,7 @@ export class CustomWorkflow {
CloudRunnerLogger.log(`Custom Job Description \n${JSON.stringify(buildSteps, undefined, 4)}`);
}
for (const step of buildSteps) {
output += await CloudRunner.Provider.runTask(
output += await CloudRunner.Provider.runTaskInWorkflow(
CloudRunner.buildParameters.buildGuid,
step.image,
step.commands,