2021-12-20 23:08:22 +00:00
|
|
|
import AWSBuildPlatform from './aws';
|
2021-08-01 23:43:20 +00:00
|
|
|
import { BuildParameters } from '..';
|
2021-10-04 23:23:49 +00:00
|
|
|
import { CloudRunnerState } from './state/cloud-runner-state';
|
2021-12-20 23:08:22 +00:00
|
|
|
import Kubernetes from './k8s';
|
2021-10-04 23:23:49 +00:00
|
|
|
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-12-30 18:47:01 +00:00
|
|
|
import { TaskParameterSerializer } from './services/task-parameter-serializer';
|
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();
|
2021-12-19 01:45:55 +00:00
|
|
|
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() {
|
2021-10-04 22:13:26 +00:00
|
|
|
switch (CloudRunnerState.buildParams.cloudRunnerCluster) {
|
2021-08-01 23:43:20 +00:00
|
|
|
case 'k8s':
|
2021-12-26 18:37:08 +00:00
|
|
|
CloudRunnerLogger.log('Cloud Runner platform selected Kubernetes');
|
2021-10-04 22:13:26 +00:00
|
|
|
CloudRunnerState.CloudRunnerProviderPlatform = new Kubernetes(CloudRunnerState.buildParams);
|
2021-12-19 01:45:55 +00:00
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
case 'aws':
|
2021-12-26 18:37:08 +00:00
|
|
|
CloudRunnerLogger.log('Cloud Runner platform selected AWS');
|
2021-12-19 01:45:55 +00:00
|
|
|
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) {
|
2021-10-04 22:13:26 +00:00
|
|
|
CloudRunner.setup(buildParameters);
|
|
|
|
|
try {
|
2021-12-25 20:10:12 +00:00
|
|
|
await CloudRunnerState.CloudRunnerProviderPlatform.setupSharedResources(
|
2021-12-30 18:47:01 +00:00
|
|
|
CloudRunnerState.buildParams.buildGuid,
|
2021-10-04 22:13:26 +00:00
|
|
|
CloudRunnerState.buildParams,
|
|
|
|
|
CloudRunnerState.branchName,
|
|
|
|
|
CloudRunnerState.defaultSecrets,
|
|
|
|
|
);
|
2021-12-30 20:25:28 +00:00
|
|
|
const output = await new WorkflowCompositionRoot().run(
|
2021-10-06 01:19:42 +00:00
|
|
|
new CloudRunnerStepState(
|
|
|
|
|
baseImage,
|
2021-12-30 18:47:01 +00:00
|
|
|
TaskParameterSerializer.readBuildEnvironmentVariables(),
|
2021-10-06 01:19:42 +00:00
|
|
|
CloudRunnerState.defaultSecrets,
|
|
|
|
|
),
|
|
|
|
|
);
|
2021-12-25 20:10:12 +00:00
|
|
|
await CloudRunnerState.CloudRunnerProviderPlatform.cleanupSharedResources(
|
2021-12-30 18:47:01 +00:00
|
|
|
CloudRunnerState.buildParams.buildGuid,
|
2021-10-04 22:13:26 +00:00
|
|
|
CloudRunnerState.buildParams,
|
|
|
|
|
CloudRunnerState.branchName,
|
|
|
|
|
CloudRunnerState.defaultSecrets,
|
|
|
|
|
);
|
2021-12-30 20:25:28 +00:00
|
|
|
return output;
|
2021-10-04 22:13:26 +00:00
|
|
|
} catch (error) {
|
2021-10-06 01:19:42 +00:00
|
|
|
await CloudRunnerError.handleException(error);
|
2021-10-04 22:13:26 +00:00
|
|
|
throw error;
|
2021-08-01 23:43:20 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-08-17 20:09:42 +00:00
|
|
|
export default CloudRunner;
|