diff --git a/action.yml b/action.yml index 7f58660e..8fab75c3 100644 --- a/action.yml +++ b/action.yml @@ -261,7 +261,16 @@ inputs: default: 'false' required: false description: 'Skip the activation/deactivation of Unity. This assumes Unity is already activated.' - + cloneDepth: + default: '50' + required: false + description: '[CloudRunner] Specifies the depth of the clone for the repository' + cloudRunnerRepoName: + default: 'game-ci/unity-builder' + required: false + description: + '[CloudRunner] Specifies the repo for the unity builder. Useful if you forked the repo for testing, features, or + fixes.' outputs: volume: description: 'The Persistent Volume (PV) where the build artifacts have been stored by Kubernetes' diff --git a/dist/index.js b/dist/index.js index ff6bad6f..6678601d 100644 Binary files a/dist/index.js and b/dist/index.js differ diff --git a/dist/index.js.map b/dist/index.js.map index 987ce0d1..828cc589 100644 Binary files a/dist/index.js.map and b/dist/index.js.map differ diff --git a/src/model/build-parameters.ts b/src/model/build-parameters.ts index 8cf60d59..ffce5e25 100644 --- a/src/model/build-parameters.ts +++ b/src/model/build-parameters.ts @@ -67,6 +67,7 @@ class BuildParameters { public pullInputList!: string[]; public inputPullCommand!: string; public cacheKey!: string; + public cloneDepth!: number; public postBuildContainerHooks!: string; public preBuildContainerHooks!: string; @@ -74,6 +75,7 @@ class BuildParameters { public runNumber!: string; public branch!: string; public githubRepo!: string; + public cloudRunnerRepoName!: string; public gitSha!: string; public logId!: string; public buildGuid!: string; @@ -194,7 +196,8 @@ class BuildParameters { branch: Input.branch.replace('/head', '') || (await GitRepoReader.GetBranch()), cloudRunnerBranch: CloudRunnerOptions.cloudRunnerBranch.split('/').reverse()[0], cloudRunnerDebug: CloudRunnerOptions.cloudRunnerDebug, - githubRepo: (Input.githubRepo ?? (await GitRepoReader.GetRemote())) || 'game-ci/unity-builder', + githubRepo: (Input.githubRepo ?? (await GitRepoReader.GetRemote())) || CloudRunnerOptions.cloudRunnerRepoName, + cloudRunnerRepoName: CloudRunnerOptions.cloudRunnerRepoName, isCliMode: Cli.isCliMode, awsStackName: CloudRunnerOptions.awsStackName, gitSha: Input.gitSha, @@ -205,6 +208,7 @@ class BuildParameters { pullInputList: CloudRunnerOptions.pullInputList, kubeStorageClass: CloudRunnerOptions.kubeStorageClass, cacheKey: CloudRunnerOptions.cacheKey, + maxRetainedWorkspaces: Number.parseInt(CloudRunnerOptions.maxRetainedWorkspaces), useLargePackages: CloudRunnerOptions.useLargePackages, useCompressionStrategy: CloudRunnerOptions.useCompressionStrategy, @@ -218,6 +222,7 @@ class BuildParameters { cacheUnityInstallationOnMac: Input.cacheUnityInstallationOnMac, unityHubVersionOnMac: Input.unityHubVersionOnMac, dockerWorkspacePath: Input.dockerWorkspacePath, + cloneDepth: Number.parseInt(CloudRunnerOptions.cloneDepth), }; } diff --git a/src/model/cloud-runner/options/cloud-runner-folders.ts b/src/model/cloud-runner/options/cloud-runner-folders.ts index afb8d038..10393dc4 100644 --- a/src/model/cloud-runner/options/cloud-runner-folders.ts +++ b/src/model/cloud-runner/options/cloud-runner-folders.ts @@ -73,7 +73,7 @@ export class CloudRunnerFolders { } public static get unityBuilderRepoUrl(): string { - return `https://${CloudRunner.buildParameters.gitPrivateToken}@github.com/game-ci/unity-builder.git`; + return `https://${CloudRunner.buildParameters.gitPrivateToken}@github.com/${CloudRunner.buildParameters.cloudRunnerRepoName}.git`; } public static get targetBuildRepoUrl(): string { diff --git a/src/model/cloud-runner/options/cloud-runner-options.ts b/src/model/cloud-runner/options/cloud-runner-options.ts index 814d104c..c2e7f6a5 100644 --- a/src/model/cloud-runner/options/cloud-runner-options.ts +++ b/src/model/cloud-runner/options/cloud-runner-options.ts @@ -74,6 +74,10 @@ class CloudRunnerOptions { return CloudRunnerOptions.getInput('githubRepoName') || CloudRunnerOptions.githubRepo?.split(`/`)[1] || ''; } + static get cloudRunnerRepoName(): string { + return CloudRunnerOptions.getInput('cloudRunnerRepoName') || `game-ci/unity-builder`; + } + static get finalHooks(): string[] { return CloudRunnerOptions.getInput('finalHooks')?.split(',') || []; } @@ -85,6 +89,7 @@ class CloudRunnerOptions { static get githubRepo(): string | undefined { return CloudRunnerOptions.getInput('GITHUB_REPOSITORY') || CloudRunnerOptions.getInput('GITHUB_REPO') || undefined; } + static get branch(): string { if (CloudRunnerOptions.getInput(`GITHUB_REF`)) { return ( @@ -139,6 +144,10 @@ class CloudRunnerOptions { return CloudRunnerOptions.getInput('customJob') || ''; } + static get cloneDepth(): string { + return CloudRunnerOptions.getInput('cloneDepth') || `50`; + } + // ### ### ### // Custom commands from files parameters // ### ### ### diff --git a/src/model/cloud-runner/providers/aws/aws-cloud-formation-templates.ts b/src/model/cloud-runner/providers/aws/aws-cloud-formation-templates.ts index 79334d30..55ffd0f5 100644 --- a/src/model/cloud-runner/providers/aws/aws-cloud-formation-templates.ts +++ b/src/model/cloud-runner/providers/aws/aws-cloud-formation-templates.ts @@ -21,6 +21,7 @@ export class AWSCloudFormationTemplates { public static getSecretDefinitionTemplate(p1: string, p2: string) { return ` + Secrets: - Name: '${p1}' ValueFrom: !Ref ${p2}Secret `; diff --git a/src/model/cloud-runner/providers/aws/aws-job-stack.ts b/src/model/cloud-runner/providers/aws/aws-job-stack.ts index 189155bc..6a1b236a 100644 --- a/src/model/cloud-runner/providers/aws/aws-job-stack.ts +++ b/src/model/cloud-runner/providers/aws/aws-job-stack.ts @@ -70,7 +70,7 @@ export class AWSJobStack { ); taskDefCloudFormation = AWSCloudFormationTemplates.insertAtTemplate( taskDefCloudFormation, - 'p3 - container def', + '# template secrets p3 - container def', AWSCloudFormationTemplates.getSecretDefinitionTemplate(secret.EnvironmentVariable, secret.ParameterKey), ); } @@ -113,9 +113,13 @@ export class AWSJobStack { }, ...secretsMappedToCloudFormationParameters, ]; + + CloudRunnerLogger.log(`TaskDef: ${taskDefCloudFormation}`); + CloudRunnerLogger.log( `Starting AWS job with memory: ${CloudRunner.buildParameters.containerMemory} cpu: ${CloudRunner.buildParameters.containerCpu}`, ); + let previousStackExists = true; while (previousStackExists) { previousStackExists = false; @@ -132,13 +136,17 @@ export class AWSJobStack { } } } + const createStackInput: SDK.CloudFormation.CreateStackInput = { StackName: taskDefStackName, TemplateBody: taskDefCloudFormation, Capabilities: ['CAPABILITY_IAM'], Parameters: parameters, }; + + CloudRunnerLogger.log(`StackInput: ${createStackInput}`); try { + CloudRunnerLogger.log(`TaskDef Cloud formation: ${taskDefCloudFormation}`); CloudRunnerLogger.log(`Creating job aws formation ${taskDefStackName}`); await CF.createStack(createStackInput).promise(); await CF.waitFor('stackCreateComplete', { StackName: taskDefStackName }).promise(); diff --git a/src/model/cloud-runner/providers/aws/cloud-formations/task-definition-formation.ts b/src/model/cloud-runner/providers/aws/cloud-formations/task-definition-formation.ts index f5d472d8..a99a7576 100644 --- a/src/model/cloud-runner/providers/aws/cloud-formations/task-definition-formation.ts +++ b/src/model/cloud-runner/providers/aws/cloud-formations/task-definition-formation.ts @@ -126,9 +126,8 @@ Resources: MountPoints: - SourceVolume: efs-data ContainerPath: !Ref EFSMountDirectory - ReadOnly: false - Secrets: - # template secrets p3 - container def + ReadOnly: false + # template secrets p3 - container def LogConfiguration: LogDriver: awslogs Options: diff --git a/src/model/cloud-runner/remote-client/index.ts b/src/model/cloud-runner/remote-client/index.ts index fc899769..4a5477d5 100644 --- a/src/model/cloud-runner/remote-client/index.ts +++ b/src/model/cloud-runner/remote-client/index.ts @@ -184,7 +184,9 @@ export class RemoteClient { await CloudRunnerSystem.Run(`git config --global filter.lfs.process "git-lfs filter-process --skip"`); try { await CloudRunnerSystem.Run( - `git clone ${CloudRunnerFolders.targetBuildRepoUrl} ${path.basename(CloudRunnerFolders.repoPathAbsolute)}`, + `git clone --depth ${CloudRunnerOptions.cloneDepth} ${CloudRunnerFolders.targetBuildRepoUrl} ${path.basename( + CloudRunnerFolders.repoPathAbsolute, + )}`, ); } catch (error: any) { throw error; diff --git a/src/model/image-tag.ts b/src/model/image-tag.ts index 2b9fd910..2b445846 100644 --- a/src/model/image-tag.ts +++ b/src/model/image-tag.ts @@ -6,7 +6,7 @@ class ImageTag { public targetPlatform: string; public builderPlatform: string; public customImage: string; - public imageRollingVersion: number; + public imageRollingVersion: string; public imagePlatformPrefix: string; constructor(imageProperties: { [key: string]: string }) { @@ -38,7 +38,7 @@ class ImageTag { providerStrategy, ); this.imagePlatformPrefix = ImageTag.getImagePlatformPrefixes(buildPlatform); - this.imageRollingVersion = Number(containerRegistryImageVersion); // Will automatically roll to the latest non-breaking version. + this.imageRollingVersion = containerRegistryImageVersion; // Will automatically roll to the latest non-breaking version. } static get versionPattern(): RegExp {