cleanup cli

pull/353/head
Frostebite 2022-04-07 01:45:15 +01:00
parent e3e8be4d6c
commit fb5cd96729
36 changed files with 589 additions and 968 deletions

1240
dist/index.js vendored

File diff suppressed because it is too large Load Diff

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -2,7 +2,7 @@ import { customAlphabet } from 'nanoid';
import * as core from '@actions/core'; import * as core from '@actions/core';
import AndroidVersioning from './android-versioning'; import AndroidVersioning from './android-versioning';
import CloudRunnerConstants from './cloud-runner/services/cloud-runner-constants'; import CloudRunnerConstants from './cloud-runner/services/cloud-runner-constants';
import CloudRunnerNamespace from './cloud-runner/services/cloud-runner-namespace'; import CloudRunnerBuildGuid from './cloud-runner/services/cloud-runner-guid';
import Input from './input'; import Input from './input';
import Platform from './platform'; import Platform from './platform';
import UnityVersioning from './unity-versioning'; import UnityVersioning from './unity-versioning';
@ -138,7 +138,7 @@ class BuildParameters {
awsStackName: Input.awsBaseStackName, awsStackName: Input.awsBaseStackName,
gitSha: Input.gitSha, gitSha: Input.gitSha,
logId: customAlphabet(CloudRunnerConstants.alphabet, 9)(), logId: customAlphabet(CloudRunnerConstants.alphabet, 9)(),
buildGuid: CloudRunnerNamespace.generateBuildName(Input.runNumber, Input.targetPlatform), buildGuid: CloudRunnerBuildGuid.generateGuid(Input.runNumber, Input.targetPlatform),
customJobHooks: Input.customJobHooks(), customJobHooks: Input.customJobHooks(),
cachePullOverrideCommand: Input.cachePullOverrideCommand(), cachePullOverrideCommand: Input.cachePullOverrideCommand(),
cachePushOverrideCommand: Input.cachePushOverrideCommand(), cachePushOverrideCommand: Input.cachePushOverrideCommand(),

View File

@ -4,12 +4,7 @@ import * as core from '@actions/core';
import { ActionYamlReader } from '../input-readers/action-yaml'; import { ActionYamlReader } from '../input-readers/action-yaml';
import CloudRunnerLogger from '../cloud-runner/services/cloud-runner-logger'; import CloudRunnerLogger from '../cloud-runner/services/cloud-runner-logger';
import { CliFunction, GetAllCliModes, GetCliFunctions } from './cli-decorator'; import { CliFunction, GetAllCliModes, GetCliFunctions } from './cli-decorator';
import { RemoteClientLogger } from './remote-client/remote-client-services/remote-client-logger';
import { SetupCloudRunnerRepository } from './remote-client/setup-cloud-runner-repository';
import * as SDK from 'aws-sdk';
import { Caching } from './remote-client/remote-client-services/caching';
import CloudRunnerQueryOverride from '../cloud-runner/services/cloud-runner-query-override'; import CloudRunnerQueryOverride from '../cloud-runner/services/cloud-runner-query-override';
import { LFSHashing } from './remote-client/remote-client-services/lfs-hashing';
export class CLI { export class CLI {
public static options; public static options;
@ -61,6 +56,7 @@ export class CLI {
return await results.target[results.propertyKey](); return await results.target[results.propertyKey]();
} }
@CliFunction(`print-input`, `prints all input`)
private static logInput() { private static logInput() {
core.info(`\n`); core.info(`\n`);
core.info(`INPUT:`); core.info(`INPUT:`);
@ -86,73 +82,4 @@ export class CLI {
const baseImage = new ImageTag(buildParameter); const baseImage = new ImageTag(buildParameter);
return await CloudRunner.run(buildParameter, baseImage.toString()); return await CloudRunner.run(buildParameter, baseImage.toString());
} }
@CliFunction(`remote-cli`, `sets up a repository, usually before a game-ci build`)
static async runRemoteClientJob() {
const buildParameter = JSON.parse(process.env.BUILD_PARAMETERS || '{}');
RemoteClientLogger.log(`Build Params:
${JSON.stringify(buildParameter, undefined, 4)}
`);
CloudRunner.buildParameters = buildParameter;
await SetupCloudRunnerRepository.run();
}
@CliFunction(`cache-push`, `push to cache`)
static async cachePush() {
try {
const buildParameter = JSON.parse(process.env.BUILD_PARAMETERS || '{}');
CloudRunner.buildParameters = buildParameter;
await Caching.PushToCache(
CLI.options['cachePushTo'],
CLI.options['cachePushFrom'],
CLI.options['artifactName'] || '',
);
} catch (error: any) {
CloudRunnerLogger.log(`${error}`);
}
}
@CliFunction(`cache-pull`, `pull from cache`)
static async cachePull() {
try {
const buildParameter = JSON.parse(process.env.BUILD_PARAMETERS || '{}');
CloudRunner.buildParameters = buildParameter;
await Caching.PullFromCache(
CLI.options['cachePushFrom'],
CLI.options['cachePushTo'],
CLI.options['artifactName'] || '',
);
} catch (error: any) {
CloudRunnerLogger.log(`${error}`);
}
}
@CliFunction(`garbage-collect-aws`, `garbage collect aws`)
static async garbageCollectAws() {
process.env.AWS_REGION = Input.region;
const CF = new SDK.CloudFormation();
const stacks = (await CF.listStacks().promise()).StackSummaries?.filter(
(_x) => _x.StackStatus !== 'DELETE_COMPLETE',
);
if (stacks === undefined) {
return;
}
CloudRunnerLogger.log(`Cloud Formation stacks`);
for (const element of stacks) {
CloudRunnerLogger.log(JSON.stringify(element, undefined, 4));
await CF.deleteStack({ StackName: element.StackName }).promise();
}
CloudRunnerLogger.log(`ECS Clusters`);
const ecs = new SDK.ECS();
CloudRunnerLogger.log(JSON.stringify(await ecs.listClusters().promise(), undefined, 4));
CloudRunnerLogger.log(JSON.stringify(await ecs.describeClusters().promise(), undefined, 4));
}
@CliFunction(`hash`, `hash all folder contents`)
static async hash() {
const folder = CLI.options['cachePushFrom'];
LFSHashing.hashAllFiles(folder);
}
} }

View File

@ -1,4 +1,4 @@
import CloudRunnerLogger from '../services/cloud-runner-logger'; import CloudRunnerLogger from '../../services/cloud-runner-logger';
import * as core from '@actions/core'; import * as core from '@actions/core';
import * as SDK from 'aws-sdk'; import * as SDK from 'aws-sdk';
import * as fs from 'fs'; import * as fs from 'fs';

View File

@ -1,7 +1,7 @@
import CloudRunnerLogger from '../services/cloud-runner-logger'; import CloudRunnerLogger from '../../services/cloud-runner-logger';
import * as SDK from 'aws-sdk'; import * as SDK from 'aws-sdk';
import * as core from '@actions/core'; import * as core from '@actions/core';
import CloudRunner from '../cloud-runner'; import CloudRunner from '../../cloud-runner';
export class AWSError { export class AWSError {
static async handleStackCreationFailure(error: any, CF: SDK.CloudFormation, taskDefStackName: string) { static async handleStackCreationFailure(error: any, CF: SDK.CloudFormation, taskDefStackName: string) {

View File

@ -1,8 +1,8 @@
import * as SDK from 'aws-sdk'; import * as SDK from 'aws-sdk';
import CloudRunnerAWSTaskDef from './cloud-runner-aws-task-def'; import CloudRunnerAWSTaskDef from './cloud-runner-aws-task-def';
import CloudRunnerSecret from '../services/cloud-runner-secret'; import CloudRunnerSecret from '../../services/cloud-runner-secret';
import { AWSCloudFormationTemplates } from './aws-cloud-formation-templates'; import { AWSCloudFormationTemplates } from './aws-cloud-formation-templates';
import CloudRunnerLogger from '../services/cloud-runner-logger'; import CloudRunnerLogger from '../../services/cloud-runner-logger';
import { AWSError } from './aws-error'; import { AWSError } from './aws-error';
export class AWSJobStack { export class AWSJobStack {

View File

@ -1,13 +1,13 @@
import * as AWS from 'aws-sdk'; import * as AWS from 'aws-sdk';
import CloudRunnerEnvironmentVariable from '../services/cloud-runner-environment-variable'; import CloudRunnerEnvironmentVariable from '../../services/cloud-runner-environment-variable';
import * as core from '@actions/core'; import * as core from '@actions/core';
import CloudRunnerAWSTaskDef from './cloud-runner-aws-task-def'; import CloudRunnerAWSTaskDef from './cloud-runner-aws-task-def';
import * as zlib from 'zlib'; import * as zlib from 'zlib';
import CloudRunnerLogger from '../services/cloud-runner-logger'; import CloudRunnerLogger from '../../services/cloud-runner-logger';
import { Input } from '../..'; import { Input } from '../../..';
import CloudRunner from '../cloud-runner'; import CloudRunner from '../../cloud-runner';
import { CloudRunnerStatics } from '../cloud-runner-statics'; import { CloudRunnerStatics } from '../../cloud-runner-statics';
import { CloudRunnerBuildCommandProcessor } from '../services/cloud-runner-build-command-process'; import { CloudRunnerBuildCommandProcessor } from '../../services/cloud-runner-build-command-process';
class AWSTaskRunner { class AWSTaskRunner {
static async runTask( static async runTask(

View File

@ -0,0 +1,29 @@
import AWS from 'aws-sdk';
import { CliFunction } from '../../../../cli/cli-decorator';
import Input from '../../../../input';
import CloudRunnerLogger from '../../../services/cloud-runner-logger';
export class AWSCLICommands {
@CliFunction(`garbage-collect-aws`, `garbage collect aws`)
static async garbageCollectAws() {
process.env.AWS_REGION = Input.region;
const CF = new AWS.CloudFormation();
const stacks = (await CF.listStacks().promise()).StackSummaries?.filter(
(_x) => _x.StackStatus !== 'DELETE_COMPLETE',
);
if (stacks === undefined) {
return;
}
CloudRunnerLogger.log(`Cloud Formation stacks`);
for (const element of stacks) {
CloudRunnerLogger.log(JSON.stringify(element, undefined, 4));
await CF.deleteStack({ StackName: element.StackName }).promise();
}
CloudRunnerLogger.log(`ECS Clusters`);
const ecs = new AWS.ECS();
CloudRunnerLogger.log(JSON.stringify(await ecs.listClusters().promise(), undefined, 4));
CloudRunnerLogger.log(JSON.stringify(await ecs.describeClusters().promise(), undefined, 4));
}
}

View File

@ -1,14 +1,14 @@
import * as SDK from 'aws-sdk'; import * as SDK from 'aws-sdk';
import CloudRunnerSecret from '../services/cloud-runner-secret'; import CloudRunnerSecret from '../../services/cloud-runner-secret';
import CloudRunnerEnvironmentVariable from '../services/cloud-runner-environment-variable'; import CloudRunnerEnvironmentVariable from '../../services/cloud-runner-environment-variable';
import CloudRunnerAWSTaskDef from './cloud-runner-aws-task-def'; import CloudRunnerAWSTaskDef from './cloud-runner-aws-task-def';
import AWSTaskRunner from './aws-task-runner'; import AWSTaskRunner from './aws-task-runner';
import { CloudRunnerProviderInterface } from '../services/cloud-runner-provider-interface'; import { CloudRunnerProviderInterface } from '../cloud-runner-provider-interface';
import BuildParameters from '../../build-parameters'; import BuildParameters from '../../../build-parameters';
import CloudRunnerLogger from '../services/cloud-runner-logger'; import CloudRunnerLogger from '../../services/cloud-runner-logger';
import { AWSJobStack } from './aws-job-stack'; import { AWSJobStack } from './aws-job-stack';
import { AWSBaseStack } from './aws-base-stack'; import { AWSBaseStack } from './aws-base-stack';
import { Input } from '../..'; import { Input } from '../../..';
class AWSBuildEnvironment implements CloudRunnerProviderInterface { class AWSBuildEnvironment implements CloudRunnerProviderInterface {
private baseStackName: string; private baseStackName: string;

View File

@ -1,6 +1,6 @@
import BuildParameters from '../../build-parameters'; import BuildParameters from '../../build-parameters';
import CloudRunnerEnvironmentVariable from './cloud-runner-environment-variable'; import CloudRunnerEnvironmentVariable from '../services/cloud-runner-environment-variable';
import CloudRunnerSecret from './cloud-runner-secret'; import CloudRunnerSecret from '../services/cloud-runner-secret';
export interface CloudRunnerProviderInterface { export interface CloudRunnerProviderInterface {
cleanupSharedResources( cleanupSharedResources(

View File

@ -1,18 +1,18 @@
import * as k8s from '@kubernetes/client-node'; import * as k8s from '@kubernetes/client-node';
import { BuildParameters, Output } from '../..'; import { BuildParameters, Output } from '../../..';
import * as core from '@actions/core'; import * as core from '@actions/core';
import { CloudRunnerProviderInterface } from '../services/cloud-runner-provider-interface'; import { CloudRunnerProviderInterface } from '../cloud-runner-provider-interface';
import CloudRunnerSecret from '../services/cloud-runner-secret'; import CloudRunnerSecret from '../../services/cloud-runner-secret';
import KubernetesStorage from './kubernetes-storage'; import KubernetesStorage from './kubernetes-storage';
import CloudRunnerEnvironmentVariable from '../services/cloud-runner-environment-variable'; import CloudRunnerEnvironmentVariable from '../../services/cloud-runner-environment-variable';
import KubernetesTaskRunner from './kubernetes-task-runner'; import KubernetesTaskRunner from './kubernetes-task-runner';
import KubernetesSecret from './kubernetes-secret'; import KubernetesSecret from './kubernetes-secret';
import waitUntil from 'async-wait-until'; import waitUntil from 'async-wait-until';
import KubernetesJobSpecFactory from './kubernetes-job-spec-factory'; import KubernetesJobSpecFactory from './kubernetes-job-spec-factory';
import KubernetesServiceAccount from './kubernetes-service-account'; import KubernetesServiceAccount from './kubernetes-service-account';
import CloudRunnerLogger from '../services/cloud-runner-logger'; import CloudRunnerLogger from '../../services/cloud-runner-logger';
import { CoreV1Api } from '@kubernetes/client-node'; import { CoreV1Api } from '@kubernetes/client-node';
import DependencyOverrideService from '../services/depdency-override-service'; import DependencyOverrideService from '../../services/depdency-override-service';
class Kubernetes implements CloudRunnerProviderInterface { class Kubernetes implements CloudRunnerProviderInterface {
private kubeConfig: k8s.KubeConfig; private kubeConfig: k8s.KubeConfig;

View File

@ -1,9 +1,9 @@
import { V1EnvVar, V1EnvVarSource, V1SecretKeySelector } from '@kubernetes/client-node'; import { V1EnvVar, V1EnvVarSource, V1SecretKeySelector } from '@kubernetes/client-node';
import BuildParameters from '../../build-parameters'; import BuildParameters from '../../../build-parameters';
import { CloudRunnerBuildCommandProcessor } from '../services/cloud-runner-build-command-process'; import { CloudRunnerBuildCommandProcessor } from '../../services/cloud-runner-build-command-process';
import CloudRunnerEnvironmentVariable from '../services/cloud-runner-environment-variable'; import CloudRunnerEnvironmentVariable from '../../services/cloud-runner-environment-variable';
import CloudRunnerSecret from '../services/cloud-runner-secret'; import CloudRunnerSecret from '../../services/cloud-runner-secret';
import CloudRunner from '../cloud-runner'; import CloudRunner from '../../cloud-runner';
class KubernetesJobSpecFactory { class KubernetesJobSpecFactory {
static getJobSpec( static getJobSpec(

View File

@ -1,5 +1,5 @@
import { CoreV1Api } from '@kubernetes/client-node'; import { CoreV1Api } from '@kubernetes/client-node';
import CloudRunnerSecret from '../services/cloud-runner-secret'; import CloudRunnerSecret from '../../services/cloud-runner-secret';
import * as k8s from '@kubernetes/client-node'; import * as k8s from '@kubernetes/client-node';
const base64 = require('base-64'); const base64 = require('base-64');

View File

@ -1,8 +1,8 @@
import waitUntil from 'async-wait-until'; import waitUntil from 'async-wait-until';
import * as core from '@actions/core'; import * as core from '@actions/core';
import * as k8s from '@kubernetes/client-node'; import * as k8s from '@kubernetes/client-node';
import BuildParameters from '../../build-parameters'; import BuildParameters from '../../../build-parameters';
import CloudRunnerLogger from '../services/cloud-runner-logger'; import CloudRunnerLogger from '../../services/cloud-runner-logger';
import YAML from 'yaml'; import YAML from 'yaml';
class KubernetesStorage { class KubernetesStorage {

View File

@ -1,10 +1,10 @@
import { CoreV1Api, KubeConfig, Log } from '@kubernetes/client-node'; import { CoreV1Api, KubeConfig, Log } from '@kubernetes/client-node';
import { Writable } from 'stream'; import { Writable } from 'stream';
import CloudRunnerLogger from '../services/cloud-runner-logger'; import CloudRunnerLogger from '../../services/cloud-runner-logger';
import * as core from '@actions/core'; import * as core from '@actions/core';
import { CloudRunnerStatics } from '../cloud-runner-statics'; import { CloudRunnerStatics } from '../../cloud-runner-statics';
import waitUntil from 'async-wait-until'; import waitUntil from 'async-wait-until';
import CloudRunner from '../cloud-runner'; import CloudRunner from '../../cloud-runner';
class KubernetesTaskRunner { class KubernetesTaskRunner {
static async runTask( static async runTask(

View File

@ -1,9 +1,9 @@
import BuildParameters from '../../build-parameters'; import BuildParameters from '../../../build-parameters';
import { CloudRunnerSystem } from '../../cli/remote-client/remote-client-services/cloud-runner-system'; import { CloudRunnerSystem } from '../../remote-client/cloud-runner-system';
import CloudRunnerEnvironmentVariable from '../services/cloud-runner-environment-variable'; import CloudRunnerEnvironmentVariable from '../../services/cloud-runner-environment-variable';
import CloudRunnerLogger from '../services/cloud-runner-logger'; import CloudRunnerLogger from '../../services/cloud-runner-logger';
import { CloudRunnerProviderInterface } from '../services/cloud-runner-provider-interface'; import { CloudRunnerProviderInterface } from '../cloud-runner-provider-interface';
import CloudRunnerSecret from '../services/cloud-runner-secret'; import CloudRunnerSecret from '../../services/cloud-runner-secret';
class LocalDockerCloudRunner implements CloudRunnerProviderInterface { class LocalDockerCloudRunner implements CloudRunnerProviderInterface {
cleanupSharedResources( cleanupSharedResources(

View File

@ -1,9 +1,9 @@
import BuildParameters from '../../build-parameters'; import BuildParameters from '../../../build-parameters';
import { CloudRunnerSystem } from '../../cli/remote-client/remote-client-services/cloud-runner-system'; import { CloudRunnerSystem } from '../../remote-client/cloud-runner-system';
import CloudRunnerEnvironmentVariable from '../services/cloud-runner-environment-variable'; import CloudRunnerEnvironmentVariable from '../../services/cloud-runner-environment-variable';
import CloudRunnerLogger from '../services/cloud-runner-logger'; import CloudRunnerLogger from '../../services/cloud-runner-logger';
import { CloudRunnerProviderInterface } from '../services/cloud-runner-provider-interface'; import { CloudRunnerProviderInterface } from '../cloud-runner-provider-interface';
import CloudRunnerSecret from '../services/cloud-runner-secret'; import CloudRunnerSecret from '../../services/cloud-runner-secret';
class LocalCloudRunner implements CloudRunnerProviderInterface { class LocalCloudRunner implements CloudRunnerProviderInterface {
cleanupSharedResources( cleanupSharedResources(

View File

@ -1,8 +1,8 @@
import BuildParameters from '../../build-parameters'; import BuildParameters from '../../../build-parameters';
import CloudRunnerEnvironmentVariable from '../services/cloud-runner-environment-variable'; import CloudRunnerEnvironmentVariable from '../../services/cloud-runner-environment-variable';
import CloudRunnerLogger from '../services/cloud-runner-logger'; import CloudRunnerLogger from '../../services/cloud-runner-logger';
import { CloudRunnerProviderInterface } from '../services/cloud-runner-provider-interface'; import { CloudRunnerProviderInterface } from '../cloud-runner-provider-interface';
import CloudRunnerSecret from '../services/cloud-runner-secret'; import CloudRunnerSecret from '../../services/cloud-runner-secret';
class TestCloudRunner implements CloudRunnerProviderInterface { class TestCloudRunner implements CloudRunnerProviderInterface {
cleanupSharedResources( cleanupSharedResources(

View File

@ -1,6 +1,6 @@
import AWSBuildPlatform from './aws'; import AWSBuildPlatform from './cloud-runner-providers/aws';
import { BuildParameters, Input } from '..'; import { BuildParameters, Input } from '..';
import Kubernetes from './k8s'; import Kubernetes from './cloud-runner-providers/k8s';
import CloudRunnerLogger from './services/cloud-runner-logger'; import CloudRunnerLogger from './services/cloud-runner-logger';
import { CloudRunnerStepState } from './cloud-runner-step-state'; import { CloudRunnerStepState } from './cloud-runner-step-state';
import { WorkflowCompositionRoot } from './workflows/workflow-composition-root'; import { WorkflowCompositionRoot } from './workflows/workflow-composition-root';
@ -8,11 +8,11 @@ import { CloudRunnerError } from './error/cloud-runner-error';
import { TaskParameterSerializer } from './services/task-parameter-serializer'; import { TaskParameterSerializer } from './services/task-parameter-serializer';
import * as core from '@actions/core'; import * as core from '@actions/core';
import CloudRunnerSecret from './services/cloud-runner-secret'; import CloudRunnerSecret from './services/cloud-runner-secret';
import { CloudRunnerProviderInterface } from './services/cloud-runner-provider-interface'; import { CloudRunnerProviderInterface } from './cloud-runner-providers/cloud-runner-provider-interface';
import CloudRunnerEnvironmentVariable from './services/cloud-runner-environment-variable'; import CloudRunnerEnvironmentVariable from './services/cloud-runner-environment-variable';
import TestCloudRunner from './test'; import TestCloudRunner from './cloud-runner-providers/test';
import LocalCloudRunner from './local'; import LocalCloudRunner from './cloud-runner-providers/local';
import LocalDockerCloudRunner from './local-docker'; import LocalDockerCloudRunner from './cloud-runner-providers/local-docker';
class CloudRunner { class CloudRunner {
public static CloudRunnerProviderPlatform: CloudRunnerProviderInterface; public static CloudRunnerProviderPlatform: CloudRunnerProviderInterface;

View File

@ -1,14 +1,45 @@
import { assert } from 'console'; import { assert } from 'console';
import fs from 'fs'; import fs from 'fs';
import path from 'path'; import path from 'path';
import CloudRunner from '../../../cloud-runner/cloud-runner'; import CloudRunner from '../cloud-runner';
import CloudRunnerLogger from '../../../cloud-runner/services/cloud-runner-logger'; import CloudRunnerLogger from '../services/cloud-runner-logger';
import { CloudRunnerFolders } from '../../../cloud-runner/services/cloud-runner-folders'; import { CloudRunnerFolders } from '../services/cloud-runner-folders';
import { CloudRunnerSystem } from './cloud-runner-system'; import { CloudRunnerSystem } from './cloud-runner-system';
import { LFSHashing } from './lfs-hashing'; import { LFSHashing } from './lfs-hashing';
import { RemoteClientLogger } from './remote-client-logger'; import { RemoteClientLogger } from './remote-client-logger';
import { CLI } from '../../cli/cli';
import { CliFunction } from '../../cli/cli-decorator';
export class Caching { export class Caching {
@CliFunction(`cache-push`, `push to cache`)
static async cachePush() {
try {
const buildParameter = JSON.parse(process.env.BUILD_PARAMETERS || '{}');
CloudRunner.buildParameters = buildParameter;
await Caching.PushToCache(
CLI.options['cachePushTo'],
CLI.options['cachePushFrom'],
CLI.options['artifactName'] || '',
);
} catch (error: any) {
CloudRunnerLogger.log(`${error}`);
}
}
@CliFunction(`cache-pull`, `pull from cache`)
static async cachePull() {
try {
const buildParameter = JSON.parse(process.env.BUILD_PARAMETERS || '{}');
CloudRunner.buildParameters = buildParameter;
await Caching.PullFromCache(
CLI.options['cachePushFrom'],
CLI.options['cachePushTo'],
CLI.options['artifactName'] || '',
);
} catch (error: any) {
CloudRunnerLogger.log(`${error}`);
}
}
public static async PushToCache(cacheFolder: string, sourceFolder: string, cacheArtifactName: string) { public static async PushToCache(cacheFolder: string, sourceFolder: string, cacheArtifactName: string) {
cacheArtifactName = cacheArtifactName.replace(' ', ''); cacheArtifactName = cacheArtifactName.replace(' ', '');
const startPath = process.cwd(); const startPath = process.cwd();

View File

@ -1,8 +1,10 @@
import path from 'path'; import path from 'path';
import { CloudRunnerFolders } from '../../../cloud-runner/services/cloud-runner-folders'; import { CloudRunnerFolders } from '../services/cloud-runner-folders';
import { CloudRunnerSystem } from './cloud-runner-system'; import { CloudRunnerSystem } from './cloud-runner-system';
import fs from 'fs'; import fs from 'fs';
import { assert } from 'console'; import { assert } from 'console';
import { CLI } from '../../cli/cli';
import { CliFunction } from '../../cli/cli-decorator';
export class LFSHashing { export class LFSHashing {
public static async createLFSHashFiles() { public static async createLFSHashFiles() {
@ -34,4 +36,10 @@ export class LFSHashing {
process.chdir(startPath); process.chdir(startPath);
return result; return result;
} }
@CliFunction(`hash`, `hash all folder contents`)
static async hash() {
const folder = CLI.options['cachePushFrom'];
LFSHashing.hashAllFiles(folder);
}
} }

View File

@ -1,4 +1,4 @@
import CloudRunnerLogger from '../../../cloud-runner/services/cloud-runner-logger'; import CloudRunnerLogger from '../services/cloud-runner-logger';
export class RemoteClientLogger { export class RemoteClientLogger {
public static log(message: string) { public static log(message: string) {

View File

@ -1,13 +1,14 @@
import fs from 'fs'; import fs from 'fs';
import CloudRunner from '../../cloud-runner/cloud-runner'; import CloudRunner from '../cloud-runner';
import { CloudRunnerFolders } from '../../cloud-runner/services/cloud-runner-folders'; import { CloudRunnerFolders } from '../services/cloud-runner-folders';
import { Caching } from './remote-client-services/caching'; import { Caching } from './caching';
import { LFSHashing } from './remote-client-services/lfs-hashing'; import { LFSHashing } from './lfs-hashing';
import { CloudRunnerSystem } from './remote-client-services/cloud-runner-system'; import { CloudRunnerSystem } from './cloud-runner-system';
import { RemoteClientLogger } from './remote-client-services/remote-client-logger'; import { RemoteClientLogger } from './remote-client-logger';
import path from 'path'; import path from 'path';
import { assert } from 'console'; import { assert } from 'console';
import CloudRunnerLogger from '../../cloud-runner/services/cloud-runner-logger'; import CloudRunnerLogger from '../services/cloud-runner-logger';
import { CliFunction } from '../../cli/cli-decorator';
export class SetupCloudRunnerRepository { export class SetupCloudRunnerRepository {
public static async run() { public static async run() {
@ -82,4 +83,14 @@ export class SetupCloudRunnerRepository {
RemoteClientLogger.log(`pulled latest LFS files`); RemoteClientLogger.log(`pulled latest LFS files`);
assert(fs.existsSync(CloudRunnerFolders.lfsDirectoryFull)); assert(fs.existsSync(CloudRunnerFolders.lfsDirectoryFull));
} }
@CliFunction(`remote-cli`, `sets up a repository, usually before a game-ci build`)
static async runRemoteClientJob() {
const buildParameter = JSON.parse(process.env.BUILD_PARAMETERS || '{}');
RemoteClientLogger.log(`Build Params:
${JSON.stringify(buildParameter, undefined, 4)}
`);
CloudRunner.buildParameters = buildParameter;
await SetupCloudRunnerRepository.run();
}
} }

View File

@ -15,13 +15,10 @@ export class CloudRunnerFolders {
'/', '/',
CloudRunnerFolders.buildVolumeFolder, CloudRunnerFolders.buildVolumeFolder,
CloudRunnerFolders.cacheFolder, CloudRunnerFolders.cacheFolder,
CloudRunnerFolders.cacheKey, CloudRunner.buildParameters.cacheKey,
); );
} }
public static get cacheKey(): string {
return CloudRunner.buildParameters.cacheKey || CloudRunner.buildParameters.branch;
}
public static get builderPathFull(): string { public static get builderPathFull(): string {
return path.join(CloudRunnerFolders.buildPathFull, `builder`); return path.join(CloudRunnerFolders.buildPathFull, `builder`);
} }

View File

@ -2,7 +2,7 @@ import { customAlphabet } from 'nanoid';
import CloudRunnerConstants from './cloud-runner-constants'; import CloudRunnerConstants from './cloud-runner-constants';
class CloudRunnerNamespace { class CloudRunnerNamespace {
static generateBuildName(runNumber: string | number, platform: string) { static generateGuid(runNumber: string | number, platform: string) {
const nanoid = customAlphabet(CloudRunnerConstants.alphabet, 4); const nanoid = customAlphabet(CloudRunnerConstants.alphabet, 4);
return `${runNumber}-${platform.toLowerCase().replace('standalone', '')}-${nanoid()}`; return `${runNumber}-${platform.toLowerCase().replace('standalone', '')}-${nanoid()}`;
} }

View File

@ -1,4 +1,4 @@
import { CloudRunnerSystem } from '../../cli/remote-client/remote-client-services/cloud-runner-system'; import { CloudRunnerSystem } from '../remote-client/cloud-runner-system';
import Input from '../../input'; import Input from '../../input';
class DependencyOverrideService { class DependencyOverrideService {

View File

@ -1,4 +1,4 @@
import { CloudRunnerSystem } from '../cli/remote-client/remote-client-services/cloud-runner-system'; import { CloudRunnerSystem } from '../cloud-runner/remote-client/cloud-runner-system';
export class GenericInputReader { export class GenericInputReader {
public static async Run(command) { public static async Run(command) {

View File

@ -1,6 +1,6 @@
import { assert } from 'console'; import { assert } from 'console';
import fs from 'fs'; import fs from 'fs';
import { CloudRunnerSystem } from '../cli/remote-client/remote-client-services/cloud-runner-system'; import { CloudRunnerSystem } from '../cloud-runner/remote-client/cloud-runner-system';
import CloudRunnerLogger from '../cloud-runner/services/cloud-runner-logger'; import CloudRunnerLogger from '../cloud-runner/services/cloud-runner-logger';
export class GitRepoReader { export class GitRepoReader {

View File

@ -1,4 +1,4 @@
import { CloudRunnerSystem } from '../cli/remote-client/remote-client-services/cloud-runner-system'; import { CloudRunnerSystem } from '../cloud-runner/remote-client/cloud-runner-system';
import * as core from '@actions/core'; import * as core from '@actions/core';
export class GithubCliReader { export class GithubCliReader {