unity-builder/src/model/cloud-runner/cloud-runner.ts

60 lines
2.1 KiB
TypeScript
Raw Normal View History

2021-12-20 23:08:22 +00:00
import AWSBuildPlatform from './aws';
2021-08-01 23:43:20 +00:00
import { BuildParameters } from '..';
import { CloudRunnerState } from './state/cloud-runner-state';
2021-12-20 23:08:22 +00:00
import Kubernetes from './k8s';
import CloudRunnerLogger from './services/cloud-runner-logger';
import { CloudRunnerStepState } from './state/cloud-runner-step-state';
2021-10-06 01:19:42 +00:00
import { WorkflowCompositionRoot } from './workflows/workflow-composition-root';
import { CloudRunnerError } from './error/cloud-runner-error';
2021-08-01 23:43:20 +00:00
2021-08-17 20:09:42 +00:00
class CloudRunner {
2021-08-21 23:26:03 +00:00
private static setup(buildParameters: BuildParameters) {
2021-09-21 18:27:04 +00:00
CloudRunnerLogger.setup();
CloudRunnerState.setup(buildParameters);
2021-08-21 23:26:03 +00:00
CloudRunner.setupBuildPlatform();
2021-08-01 23:43:20 +00:00
}
2021-11-28 17:08:37 +00:00
private static setupBuildPlatform() {
switch (CloudRunnerState.buildParams.cloudRunnerCluster) {
2021-08-01 23:43:20 +00:00
case 'k8s':
2021-09-21 18:27:04 +00:00
CloudRunnerLogger.log('Building with Kubernetes');
CloudRunnerState.CloudRunnerProviderPlatform = new Kubernetes(CloudRunnerState.buildParams);
break;
default:
case 'aws':
CloudRunnerLogger.log('Building with AWS');
CloudRunnerState.CloudRunnerProviderPlatform = new AWSBuildPlatform(CloudRunnerState.buildParams);
2021-08-01 23:43:20 +00:00
break;
}
}
2021-12-06 20:56:40 +00:00
static async run(buildParameters: BuildParameters, baseImage: string) {
CloudRunner.setup(buildParameters);
try {
await CloudRunnerState.CloudRunnerProviderPlatform.setupSharedBuildResources(
CloudRunnerState.buildGuid,
CloudRunnerState.buildParams,
CloudRunnerState.branchName,
CloudRunnerState.defaultSecrets,
);
2021-10-06 01:19:42 +00:00
await new WorkflowCompositionRoot().run(
new CloudRunnerStepState(
baseImage,
CloudRunnerState.readBuildEnvironmentVariables(),
CloudRunnerState.defaultSecrets,
),
);
await CloudRunnerState.CloudRunnerProviderPlatform.cleanupSharedBuildResources(
CloudRunnerState.buildGuid,
CloudRunnerState.buildParams,
CloudRunnerState.branchName,
CloudRunnerState.defaultSecrets,
);
} catch (error) {
2021-10-06 01:19:42 +00:00
await CloudRunnerError.handleException(error);
throw error;
2021-08-01 23:43:20 +00:00
}
}
}
2021-08-17 20:09:42 +00:00
export default CloudRunner;