mirror of
https://github.com/game-ci/unity-builder.git
synced 2025-07-04 12:25:19 -04:00

* feat: streamline code styles * feat: spacing for comments and return statements * chore: enforce camelcase * fix: remove npm lock file * fix: add integrity test * fix: remove logfile * chore: update node in test workflow
93 lines
4.0 KiB
TypeScript
93 lines
4.0 KiB
TypeScript
import AwsBuildPlatform from './providers/aws';
|
|
import { BuildParameters, Input } from '..';
|
|
import Kubernetes from './providers/k8s';
|
|
import CloudRunnerLogger from './services/cloud-runner-logger';
|
|
import { CloudRunnerStepState } from './cloud-runner-step-state';
|
|
import { WorkflowCompositionRoot } from './workflows/workflow-composition-root';
|
|
import { CloudRunnerError } from './error/cloud-runner-error';
|
|
import { TaskParameterSerializer } from './services/task-parameter-serializer';
|
|
import * as core from '@actions/core';
|
|
import CloudRunnerSecret from './services/cloud-runner-secret';
|
|
import { ProviderInterface } from './providers/provider-interface';
|
|
import CloudRunnerEnvironmentVariable from './services/cloud-runner-environment-variable';
|
|
import TestCloudRunner from './providers/test';
|
|
import LocalCloudRunner from './providers/local';
|
|
import LocalDockerCloudRunner from './providers/local-docker';
|
|
|
|
class CloudRunner {
|
|
public static Provider: ProviderInterface;
|
|
static buildParameters: BuildParameters;
|
|
public static defaultSecrets: CloudRunnerSecret[];
|
|
public static cloudRunnerEnvironmentVariables: CloudRunnerEnvironmentVariable[];
|
|
private static setup(buildParameters: BuildParameters) {
|
|
CloudRunnerLogger.setup();
|
|
CloudRunner.buildParameters = buildParameters;
|
|
CloudRunner.setupBuildPlatform();
|
|
CloudRunner.defaultSecrets = TaskParameterSerializer.readDefaultSecrets();
|
|
CloudRunner.cloudRunnerEnvironmentVariables = TaskParameterSerializer.readBuildEnvironmentVariables();
|
|
if (!buildParameters.isCliMode) {
|
|
const buildParameterPropertyNames = Object.getOwnPropertyNames(buildParameters);
|
|
for (const element of CloudRunner.cloudRunnerEnvironmentVariables) {
|
|
core.setOutput(Input.ToEnvVarFormat(element.name), element.value);
|
|
}
|
|
for (const element of buildParameterPropertyNames) {
|
|
core.setOutput(Input.ToEnvVarFormat(element), buildParameters[element]);
|
|
}
|
|
}
|
|
}
|
|
|
|
private static setupBuildPlatform() {
|
|
CloudRunnerLogger.log(`Cloud Runner platform selected ${CloudRunner.buildParameters.cloudRunnerCluster}`);
|
|
switch (CloudRunner.buildParameters.cloudRunnerCluster) {
|
|
case 'k8s':
|
|
CloudRunner.Provider = new Kubernetes(CloudRunner.buildParameters);
|
|
break;
|
|
case 'aws':
|
|
CloudRunner.Provider = new AwsBuildPlatform(CloudRunner.buildParameters);
|
|
break;
|
|
case 'test':
|
|
CloudRunner.Provider = new TestCloudRunner();
|
|
break;
|
|
case 'local-system':
|
|
CloudRunner.Provider = new LocalCloudRunner();
|
|
break;
|
|
case 'local-docker':
|
|
CloudRunner.Provider = new LocalDockerCloudRunner();
|
|
break;
|
|
}
|
|
}
|
|
|
|
static async run(buildParameters: BuildParameters, baseImage: string) {
|
|
CloudRunner.setup(buildParameters);
|
|
try {
|
|
if (!CloudRunner.buildParameters.isCliMode) core.startGroup('Setup shared cloud runner resources');
|
|
await CloudRunner.Provider.setup(
|
|
CloudRunner.buildParameters.buildGuid,
|
|
CloudRunner.buildParameters,
|
|
CloudRunner.buildParameters.branch,
|
|
CloudRunner.defaultSecrets,
|
|
);
|
|
if (!CloudRunner.buildParameters.isCliMode) core.endGroup();
|
|
const output = await new WorkflowCompositionRoot().run(
|
|
new CloudRunnerStepState(baseImage, CloudRunner.cloudRunnerEnvironmentVariables, CloudRunner.defaultSecrets),
|
|
);
|
|
if (!CloudRunner.buildParameters.isCliMode) core.startGroup('Cleanup shared cloud runner resources');
|
|
await CloudRunner.Provider.cleanup(
|
|
CloudRunner.buildParameters.buildGuid,
|
|
CloudRunner.buildParameters,
|
|
CloudRunner.buildParameters.branch,
|
|
CloudRunner.defaultSecrets,
|
|
);
|
|
CloudRunnerLogger.log(`Cleanup complete`);
|
|
if (!CloudRunner.buildParameters.isCliMode) core.endGroup();
|
|
|
|
return output;
|
|
} catch (error) {
|
|
if (!CloudRunner.buildParameters.isCliMode) core.endGroup();
|
|
await CloudRunnerError.handleException(error);
|
|
throw error;
|
|
}
|
|
}
|
|
}
|
|
export default CloudRunner;
|