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 AndroidVersioning from './android-versioning';
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 Platform from './platform';
import UnityVersioning from './unity-versioning';
@ -138,7 +138,7 @@ class BuildParameters {
awsStackName: Input.awsBaseStackName,
gitSha: Input.gitSha,
logId: customAlphabet(CloudRunnerConstants.alphabet, 9)(),
buildGuid: CloudRunnerNamespace.generateBuildName(Input.runNumber, Input.targetPlatform),
buildGuid: CloudRunnerBuildGuid.generateGuid(Input.runNumber, Input.targetPlatform),
customJobHooks: Input.customJobHooks(),
cachePullOverrideCommand: Input.cachePullOverrideCommand(),
cachePushOverrideCommand: Input.cachePushOverrideCommand(),

View File

@ -4,12 +4,7 @@ import * as core from '@actions/core';
import { ActionYamlReader } from '../input-readers/action-yaml';
import CloudRunnerLogger from '../cloud-runner/services/cloud-runner-logger';
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 { LFSHashing } from './remote-client/remote-client-services/lfs-hashing';
export class CLI {
public static options;
@ -61,6 +56,7 @@ export class CLI {
return await results.target[results.propertyKey]();
}
@CliFunction(`print-input`, `prints all input`)
private static logInput() {
core.info(`\n`);
core.info(`INPUT:`);
@ -86,73 +82,4 @@ export class CLI {
const baseImage = new ImageTag(buildParameter);
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 SDK from 'aws-sdk';
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 core from '@actions/core';
import CloudRunner from '../cloud-runner';
import CloudRunner from '../../cloud-runner';
export class AWSError {
static async handleStackCreationFailure(error: any, CF: SDK.CloudFormation, taskDefStackName: string) {

View File

@ -1,8 +1,8 @@
import * as SDK from 'aws-sdk';
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 CloudRunnerLogger from '../services/cloud-runner-logger';
import CloudRunnerLogger from '../../services/cloud-runner-logger';
import { AWSError } from './aws-error';
export class AWSJobStack {

View File

@ -1,13 +1,13 @@
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 CloudRunnerAWSTaskDef from './cloud-runner-aws-task-def';
import * as zlib from 'zlib';
import CloudRunnerLogger from '../services/cloud-runner-logger';
import { Input } from '../..';
import CloudRunner from '../cloud-runner';
import { CloudRunnerStatics } from '../cloud-runner-statics';
import { CloudRunnerBuildCommandProcessor } from '../services/cloud-runner-build-command-process';
import CloudRunnerLogger from '../../services/cloud-runner-logger';
import { Input } from '../../..';
import CloudRunner from '../../cloud-runner';
import { CloudRunnerStatics } from '../../cloud-runner-statics';
import { CloudRunnerBuildCommandProcessor } from '../../services/cloud-runner-build-command-process';
class AWSTaskRunner {
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 CloudRunnerSecret from '../services/cloud-runner-secret';
import CloudRunnerEnvironmentVariable from '../services/cloud-runner-environment-variable';
import CloudRunnerSecret from '../../services/cloud-runner-secret';
import CloudRunnerEnvironmentVariable from '../../services/cloud-runner-environment-variable';
import CloudRunnerAWSTaskDef from './cloud-runner-aws-task-def';
import AWSTaskRunner from './aws-task-runner';
import { CloudRunnerProviderInterface } from '../services/cloud-runner-provider-interface';
import BuildParameters from '../../build-parameters';
import CloudRunnerLogger from '../services/cloud-runner-logger';
import { CloudRunnerProviderInterface } from '../cloud-runner-provider-interface';
import BuildParameters from '../../../build-parameters';
import CloudRunnerLogger from '../../services/cloud-runner-logger';
import { AWSJobStack } from './aws-job-stack';
import { AWSBaseStack } from './aws-base-stack';
import { Input } from '../..';
import { Input } from '../../..';
class AWSBuildEnvironment implements CloudRunnerProviderInterface {
private baseStackName: string;

View File

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

View File

@ -1,18 +1,18 @@
import * as k8s from '@kubernetes/client-node';
import { BuildParameters, Output } from '../..';
import { BuildParameters, Output } from '../../..';
import * as core from '@actions/core';
import { CloudRunnerProviderInterface } from '../services/cloud-runner-provider-interface';
import CloudRunnerSecret from '../services/cloud-runner-secret';
import { CloudRunnerProviderInterface } from '../cloud-runner-provider-interface';
import CloudRunnerSecret from '../../services/cloud-runner-secret';
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 KubernetesSecret from './kubernetes-secret';
import waitUntil from 'async-wait-until';
import KubernetesJobSpecFactory from './kubernetes-job-spec-factory';
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 DependencyOverrideService from '../services/depdency-override-service';
import DependencyOverrideService from '../../services/depdency-override-service';
class Kubernetes implements CloudRunnerProviderInterface {
private kubeConfig: k8s.KubeConfig;

View File

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

View File

@ -1,5 +1,5 @@
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';
const base64 = require('base-64');

View File

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

View File

@ -1,10 +1,10 @@
import { CoreV1Api, KubeConfig, Log } from '@kubernetes/client-node';
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 { CloudRunnerStatics } from '../cloud-runner-statics';
import { CloudRunnerStatics } from '../../cloud-runner-statics';
import waitUntil from 'async-wait-until';
import CloudRunner from '../cloud-runner';
import CloudRunner from '../../cloud-runner';
class KubernetesTaskRunner {
static async runTask(

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
import AWSBuildPlatform from './aws';
import AWSBuildPlatform from './cloud-runner-providers/aws';
import { BuildParameters, Input } from '..';
import Kubernetes from './k8s';
import Kubernetes from './cloud-runner-providers/k8s';
import CloudRunnerLogger from './services/cloud-runner-logger';
import { CloudRunnerStepState } from './cloud-runner-step-state';
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 * as core from '@actions/core';
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 TestCloudRunner from './test';
import LocalCloudRunner from './local';
import LocalDockerCloudRunner from './local-docker';
import TestCloudRunner from './cloud-runner-providers/test';
import LocalCloudRunner from './cloud-runner-providers/local';
import LocalDockerCloudRunner from './cloud-runner-providers/local-docker';
class CloudRunner {
public static CloudRunnerProviderPlatform: CloudRunnerProviderInterface;

View File

@ -1,14 +1,45 @@
import { assert } from 'console';
import fs from 'fs';
import path from 'path';
import CloudRunner from '../../../cloud-runner/cloud-runner';
import CloudRunnerLogger from '../../../cloud-runner/services/cloud-runner-logger';
import { CloudRunnerFolders } from '../../../cloud-runner/services/cloud-runner-folders';
import CloudRunner from '../cloud-runner';
import CloudRunnerLogger from '../services/cloud-runner-logger';
import { CloudRunnerFolders } from '../services/cloud-runner-folders';
import { CloudRunnerSystem } from './cloud-runner-system';
import { LFSHashing } from './lfs-hashing';
import { RemoteClientLogger } from './remote-client-logger';
import { CLI } from '../../cli/cli';
import { CliFunction } from '../../cli/cli-decorator';
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) {
cacheArtifactName = cacheArtifactName.replace(' ', '');
const startPath = process.cwd();

View File

@ -1,8 +1,10 @@
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 fs from 'fs';
import { assert } from 'console';
import { CLI } from '../../cli/cli';
import { CliFunction } from '../../cli/cli-decorator';
export class LFSHashing {
public static async createLFSHashFiles() {
@ -34,4 +36,10 @@ export class LFSHashing {
process.chdir(startPath);
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 {
public static log(message: string) {

View File

@ -1,13 +1,14 @@
import fs from 'fs';
import CloudRunner from '../../cloud-runner/cloud-runner';
import { CloudRunnerFolders } from '../../cloud-runner/services/cloud-runner-folders';
import { Caching } from './remote-client-services/caching';
import { LFSHashing } from './remote-client-services/lfs-hashing';
import { CloudRunnerSystem } from './remote-client-services/cloud-runner-system';
import { RemoteClientLogger } from './remote-client-services/remote-client-logger';
import CloudRunner from '../cloud-runner';
import { CloudRunnerFolders } from '../services/cloud-runner-folders';
import { Caching } from './caching';
import { LFSHashing } from './lfs-hashing';
import { CloudRunnerSystem } from './cloud-runner-system';
import { RemoteClientLogger } from './remote-client-logger';
import path from 'path';
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 {
public static async run() {
@ -82,4 +83,14 @@ export class SetupCloudRunnerRepository {
RemoteClientLogger.log(`pulled latest LFS files`);
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.cacheFolder,
CloudRunnerFolders.cacheKey,
CloudRunner.buildParameters.cacheKey,
);
}
public static get cacheKey(): string {
return CloudRunner.buildParameters.cacheKey || CloudRunner.buildParameters.branch;
}
public static get builderPathFull(): string {
return path.join(CloudRunnerFolders.buildPathFull, `builder`);
}

View File

@ -2,7 +2,7 @@ import { customAlphabet } from 'nanoid';
import CloudRunnerConstants from './cloud-runner-constants';
class CloudRunnerNamespace {
static generateBuildName(runNumber: string | number, platform: string) {
static generateGuid(runNumber: string | number, platform: string) {
const nanoid = customAlphabet(CloudRunnerConstants.alphabet, 4);
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';
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 {
public static async Run(command) {

View File

@ -1,6 +1,6 @@
import { assert } from 'console';
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';
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';
export class GithubCliReader {