This commit is contained in:
brian-golfplusvr 2025-02-07 18:09:19 +00:00 committed by GitHub
commit 6aa961efae
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 43 additions and 10 deletions

View File

@ -261,7 +261,16 @@ inputs:
default: 'false' default: 'false'
required: false required: false
description: 'Skip the activation/deactivation of Unity. This assumes Unity is already activated.' 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: outputs:
volume: volume:
description: 'The Persistent Volume (PV) where the build artifacts have been stored by Kubernetes' description: 'The Persistent Volume (PV) where the build artifacts have been stored by Kubernetes'

BIN
dist/index.js generated vendored

Binary file not shown.

BIN
dist/index.js.map generated vendored

Binary file not shown.

View File

@ -67,6 +67,7 @@ class BuildParameters {
public pullInputList!: string[]; public pullInputList!: string[];
public inputPullCommand!: string; public inputPullCommand!: string;
public cacheKey!: string; public cacheKey!: string;
public cloneDepth!: number;
public postBuildContainerHooks!: string; public postBuildContainerHooks!: string;
public preBuildContainerHooks!: string; public preBuildContainerHooks!: string;
@ -74,6 +75,7 @@ class BuildParameters {
public runNumber!: string; public runNumber!: string;
public branch!: string; public branch!: string;
public githubRepo!: string; public githubRepo!: string;
public cloudRunnerRepoName!: string;
public gitSha!: string; public gitSha!: string;
public logId!: string; public logId!: string;
public buildGuid!: string; public buildGuid!: string;
@ -194,7 +196,8 @@ class BuildParameters {
branch: Input.branch.replace('/head', '') || (await GitRepoReader.GetBranch()), branch: Input.branch.replace('/head', '') || (await GitRepoReader.GetBranch()),
cloudRunnerBranch: CloudRunnerOptions.cloudRunnerBranch.split('/').reverse()[0], cloudRunnerBranch: CloudRunnerOptions.cloudRunnerBranch.split('/').reverse()[0],
cloudRunnerDebug: CloudRunnerOptions.cloudRunnerDebug, 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, isCliMode: Cli.isCliMode,
awsStackName: CloudRunnerOptions.awsStackName, awsStackName: CloudRunnerOptions.awsStackName,
gitSha: Input.gitSha, gitSha: Input.gitSha,
@ -205,6 +208,7 @@ class BuildParameters {
pullInputList: CloudRunnerOptions.pullInputList, pullInputList: CloudRunnerOptions.pullInputList,
kubeStorageClass: CloudRunnerOptions.kubeStorageClass, kubeStorageClass: CloudRunnerOptions.kubeStorageClass,
cacheKey: CloudRunnerOptions.cacheKey, cacheKey: CloudRunnerOptions.cacheKey,
maxRetainedWorkspaces: Number.parseInt(CloudRunnerOptions.maxRetainedWorkspaces), maxRetainedWorkspaces: Number.parseInt(CloudRunnerOptions.maxRetainedWorkspaces),
useLargePackages: CloudRunnerOptions.useLargePackages, useLargePackages: CloudRunnerOptions.useLargePackages,
useCompressionStrategy: CloudRunnerOptions.useCompressionStrategy, useCompressionStrategy: CloudRunnerOptions.useCompressionStrategy,
@ -218,6 +222,7 @@ class BuildParameters {
cacheUnityInstallationOnMac: Input.cacheUnityInstallationOnMac, cacheUnityInstallationOnMac: Input.cacheUnityInstallationOnMac,
unityHubVersionOnMac: Input.unityHubVersionOnMac, unityHubVersionOnMac: Input.unityHubVersionOnMac,
dockerWorkspacePath: Input.dockerWorkspacePath, dockerWorkspacePath: Input.dockerWorkspacePath,
cloneDepth: Number.parseInt(CloudRunnerOptions.cloneDepth),
}; };
} }

View File

@ -73,7 +73,7 @@ export class CloudRunnerFolders {
} }
public static get unityBuilderRepoUrl(): string { 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 { public static get targetBuildRepoUrl(): string {

View File

@ -74,6 +74,10 @@ class CloudRunnerOptions {
return CloudRunnerOptions.getInput('githubRepoName') || CloudRunnerOptions.githubRepo?.split(`/`)[1] || ''; return CloudRunnerOptions.getInput('githubRepoName') || CloudRunnerOptions.githubRepo?.split(`/`)[1] || '';
} }
static get cloudRunnerRepoName(): string {
return CloudRunnerOptions.getInput('cloudRunnerRepoName') || `game-ci/unity-builder`;
}
static get finalHooks(): string[] { static get finalHooks(): string[] {
return CloudRunnerOptions.getInput('finalHooks')?.split(',') || []; return CloudRunnerOptions.getInput('finalHooks')?.split(',') || [];
} }
@ -85,6 +89,7 @@ class CloudRunnerOptions {
static get githubRepo(): string | undefined { static get githubRepo(): string | undefined {
return CloudRunnerOptions.getInput('GITHUB_REPOSITORY') || CloudRunnerOptions.getInput('GITHUB_REPO') || undefined; return CloudRunnerOptions.getInput('GITHUB_REPOSITORY') || CloudRunnerOptions.getInput('GITHUB_REPO') || undefined;
} }
static get branch(): string { static get branch(): string {
if (CloudRunnerOptions.getInput(`GITHUB_REF`)) { if (CloudRunnerOptions.getInput(`GITHUB_REF`)) {
return ( return (
@ -139,6 +144,10 @@ class CloudRunnerOptions {
return CloudRunnerOptions.getInput('customJob') || ''; return CloudRunnerOptions.getInput('customJob') || '';
} }
static get cloneDepth(): string {
return CloudRunnerOptions.getInput('cloneDepth') || `50`;
}
// ### ### ### // ### ### ###
// Custom commands from files parameters // Custom commands from files parameters
// ### ### ### // ### ### ###

View File

@ -21,6 +21,7 @@ export class AWSCloudFormationTemplates {
public static getSecretDefinitionTemplate(p1: string, p2: string) { public static getSecretDefinitionTemplate(p1: string, p2: string) {
return ` return `
Secrets:
- Name: '${p1}' - Name: '${p1}'
ValueFrom: !Ref ${p2}Secret ValueFrom: !Ref ${p2}Secret
`; `;

View File

@ -70,7 +70,7 @@ export class AWSJobStack {
); );
taskDefCloudFormation = AWSCloudFormationTemplates.insertAtTemplate( taskDefCloudFormation = AWSCloudFormationTemplates.insertAtTemplate(
taskDefCloudFormation, taskDefCloudFormation,
'p3 - container def', '# template secrets p3 - container def',
AWSCloudFormationTemplates.getSecretDefinitionTemplate(secret.EnvironmentVariable, secret.ParameterKey), AWSCloudFormationTemplates.getSecretDefinitionTemplate(secret.EnvironmentVariable, secret.ParameterKey),
); );
} }
@ -113,9 +113,13 @@ export class AWSJobStack {
}, },
...secretsMappedToCloudFormationParameters, ...secretsMappedToCloudFormationParameters,
]; ];
CloudRunnerLogger.log(`TaskDef: ${taskDefCloudFormation}`);
CloudRunnerLogger.log( CloudRunnerLogger.log(
`Starting AWS job with memory: ${CloudRunner.buildParameters.containerMemory} cpu: ${CloudRunner.buildParameters.containerCpu}`, `Starting AWS job with memory: ${CloudRunner.buildParameters.containerMemory} cpu: ${CloudRunner.buildParameters.containerCpu}`,
); );
let previousStackExists = true; let previousStackExists = true;
while (previousStackExists) { while (previousStackExists) {
previousStackExists = false; previousStackExists = false;
@ -132,13 +136,17 @@ export class AWSJobStack {
} }
} }
} }
const createStackInput: SDK.CloudFormation.CreateStackInput = { const createStackInput: SDK.CloudFormation.CreateStackInput = {
StackName: taskDefStackName, StackName: taskDefStackName,
TemplateBody: taskDefCloudFormation, TemplateBody: taskDefCloudFormation,
Capabilities: ['CAPABILITY_IAM'], Capabilities: ['CAPABILITY_IAM'],
Parameters: parameters, Parameters: parameters,
}; };
CloudRunnerLogger.log(`StackInput: ${createStackInput}`);
try { try {
CloudRunnerLogger.log(`TaskDef Cloud formation: ${taskDefCloudFormation}`);
CloudRunnerLogger.log(`Creating job aws formation ${taskDefStackName}`); CloudRunnerLogger.log(`Creating job aws formation ${taskDefStackName}`);
await CF.createStack(createStackInput).promise(); await CF.createStack(createStackInput).promise();
await CF.waitFor('stackCreateComplete', { StackName: taskDefStackName }).promise(); await CF.waitFor('stackCreateComplete', { StackName: taskDefStackName }).promise();

View File

@ -127,7 +127,6 @@ Resources:
- SourceVolume: efs-data - SourceVolume: efs-data
ContainerPath: !Ref EFSMountDirectory ContainerPath: !Ref EFSMountDirectory
ReadOnly: false ReadOnly: false
Secrets:
# template secrets p3 - container def # template secrets p3 - container def
LogConfiguration: LogConfiguration:
LogDriver: awslogs LogDriver: awslogs

View File

@ -184,7 +184,9 @@ export class RemoteClient {
await CloudRunnerSystem.Run(`git config --global filter.lfs.process "git-lfs filter-process --skip"`); await CloudRunnerSystem.Run(`git config --global filter.lfs.process "git-lfs filter-process --skip"`);
try { try {
await CloudRunnerSystem.Run( 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) { } catch (error: any) {
throw error; throw error;

View File

@ -6,7 +6,7 @@ class ImageTag {
public targetPlatform: string; public targetPlatform: string;
public builderPlatform: string; public builderPlatform: string;
public customImage: string; public customImage: string;
public imageRollingVersion: number; public imageRollingVersion: string;
public imagePlatformPrefix: string; public imagePlatformPrefix: string;
constructor(imageProperties: { [key: string]: string }) { constructor(imageProperties: { [key: string]: string }) {
@ -38,7 +38,7 @@ class ImageTag {
providerStrategy, providerStrategy,
); );
this.imagePlatformPrefix = ImageTag.getImagePlatformPrefixes(buildPlatform); 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 { static get versionPattern(): RegExp {