unity-builder/src/model/cloud-runner/workflows/custom-workflow.ts

47 lines
1.7 KiB
TypeScript
Raw Normal View History

import CloudRunnerLogger from '../services/cloud-runner-logger';
import CloudRunnerSecret from '../services/cloud-runner-secret';
import { CloudRunnerState } from '../state/cloud-runner-state';
import YAML from 'yaml';
2021-12-30 16:48:46 +00:00
import { Input } from '../..';
2021-12-30 18:47:01 +00:00
import { TaskParameterSerializer } from '../services/task-parameter-serializer';
2021-10-06 01:19:42 +00:00
export class CustomWorkflow {
public static async runCustomJob(buildSteps) {
2021-11-21 17:20:11 +00:00
try {
CloudRunnerLogger.log(`Cloud Runner is running in custom job mode`);
2021-12-31 20:44:33 +00:00
if (Input.cloudRunnerTests) {
CloudRunnerLogger.log(`Parsing build steps: ${buildSteps}`);
}
2021-12-13 22:21:26 +00:00
try {
buildSteps = YAML.parse(buildSteps);
2021-12-30 20:25:28 +00:00
let output = '';
2021-12-13 22:21:26 +00:00
for (const step of buildSteps) {
const stepSecrets: CloudRunnerSecret[] = step.secrets.map((x) => {
const secret: CloudRunnerSecret = {
ParameterKey: x.name,
2021-12-30 16:48:46 +00:00
EnvironmentVariable: Input.ToEnvVarFormat(x.name),
2021-12-13 22:21:26 +00:00
ParameterValue: x.value,
};
return secret;
});
2021-12-30 20:25:28 +00:00
output += await CloudRunnerState.CloudRunnerProviderPlatform.runTask(
2021-12-30 18:47:01 +00:00
CloudRunnerState.buildParams.buildGuid,
2021-12-13 22:21:26 +00:00
step['image'],
step['commands'],
`/${CloudRunnerState.buildVolumeFolder}`,
`/${CloudRunnerState.buildVolumeFolder}`,
2021-12-30 18:47:01 +00:00
TaskParameterSerializer.readBuildEnvironmentVariables(),
2021-12-13 22:21:26 +00:00
[...CloudRunnerState.defaultSecrets, ...stepSecrets],
);
}
2021-12-30 20:25:28 +00:00
return output;
2021-12-13 22:21:26 +00:00
} catch (error) {
CloudRunnerLogger.log(`failed to parse a custom job "${buildSteps}"`);
throw error;
2021-11-21 17:20:11 +00:00
}
} catch (error) {
throw error;
}
}
}