cleanup cli
parent
e3e8be4d6c
commit
fb5cd96729
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
|
@ -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(),
|
||||||
|
|
|
||||||
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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';
|
||||||
|
|
@ -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) {
|
||||||
|
|
@ -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 {
|
||||||
|
|
@ -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(
|
||||||
|
|
@ -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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
|
@ -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(
|
||||||
|
|
@ -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;
|
||||||
|
|
@ -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(
|
||||||
|
|
@ -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');
|
||||||
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
@ -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(
|
||||||
|
|
@ -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(
|
||||||
|
|
@ -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(
|
||||||
|
|
@ -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(
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -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) {
|
||||||
|
|
@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -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`);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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()}`;
|
||||||
}
|
}
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue