60 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
| import path from 'path';
 | |
| import { Input } from '../..';
 | |
| import { CloudRunnerBuildCommandProcessor } from '../services/cloud-runner-build-command-process';
 | |
| import CloudRunnerEnvironmentVariable from '../services/cloud-runner-environment-variable';
 | |
| import CloudRunnerLogger from '../services/cloud-runner-logger';
 | |
| import CloudRunnerSecret from '../services/cloud-runner-secret';
 | |
| import { CloudRunnerState } from '../state/cloud-runner-state';
 | |
| import { CloudRunnerStepState } from '../state/cloud-runner-step-state';
 | |
| import { StepInterface } from './step-interface';
 | |
| 
 | |
| export class SetupStep implements StepInterface {
 | |
|   async run(cloudRunnerStepState: CloudRunnerStepState) {
 | |
|     try {
 | |
|       return await SetupStep.downloadRepository(
 | |
|         cloudRunnerStepState.image,
 | |
|         cloudRunnerStepState.environment,
 | |
|         cloudRunnerStepState.secrets,
 | |
|       );
 | |
|     } catch (error) {
 | |
|       throw error;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   private static async downloadRepository(
 | |
|     image: string,
 | |
|     environmentVariables: CloudRunnerEnvironmentVariable[],
 | |
|     secrets: CloudRunnerSecret[],
 | |
|   ) {
 | |
|     try {
 | |
|       CloudRunnerLogger.log(` `);
 | |
|       CloudRunnerLogger.logLine('Starting step 1/2 (setup game files from repository)');
 | |
|       const hooks = CloudRunnerBuildCommandProcessor.getHooks().filter((x) => x.step.includes(`setup`));
 | |
|       return await CloudRunnerState.CloudRunnerProviderPlatform.runTask(
 | |
|         CloudRunnerState.buildParams.buildGuid,
 | |
|         image,
 | |
|         `apk update -q
 | |
|         apk add git-lfs jq tree zip unzip nodejs -q
 | |
|         ${hooks.filter((x) => x.hook.includes(`before`)).map((x) => x.commands) || ' '}
 | |
|         export GIT_DISCOVERY_ACROSS_FILESYSTEM=1
 | |
|         mkdir -p ${CloudRunnerState.builderPathFull.replace(/\\/g, `/`)}
 | |
|         git clone -q -b ${process.env.CLOUD_RUNNER_BRANCH} ${
 | |
|           CloudRunnerState.unityBuilderRepoUrl
 | |
|         } "${CloudRunnerState.builderPathFull.replace(/\\/g, `/`)}"
 | |
|         ${Input.cloudRunnerTests ? '' : '#'} tree ${CloudRunnerState.builderPathFull.replace(/\\/g, `/`)}
 | |
|         chmod +x ${path.join(CloudRunnerState.builderPathFull, 'dist', `index.js`).replace(/\\/g, `/`)}
 | |
|         node ${path.join(CloudRunnerState.builderPathFull, 'dist', `index.js`).replace(/\\/g, `/`)} -m remote-cli
 | |
|         ${hooks.filter((x) => x.hook.includes(`after`)).map((x) => x.commands) || ' '}
 | |
|         `,
 | |
|         `/${CloudRunnerState.buildVolumeFolder}`,
 | |
|         `/${CloudRunnerState.buildVolumeFolder}/`,
 | |
|         environmentVariables,
 | |
|         secrets,
 | |
|       );
 | |
|     } catch (error) {
 | |
|       CloudRunnerLogger.logLine(`Failed download repository step 1/2`);
 | |
|       throw error;
 | |
|     }
 | |
|   }
 | |
| }
 |