mirror of
https://github.com/game-ci/unity-builder.git
synced 2025-07-04 12:25:19 -04:00
Merge db9abc4f3b
into 83c85328dd
This commit is contained in:
commit
6aa961efae
11
action.yml
11
action.yml
@ -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
BIN
dist/index.js
generated
vendored
Binary file not shown.
BIN
dist/index.js.map
generated
vendored
BIN
dist/index.js.map
generated
vendored
Binary file not shown.
@ -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),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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 {
|
||||||
|
@ -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
|
||||||
// ### ### ###
|
// ### ### ###
|
||||||
|
@ -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
|
||||||
`;
|
`;
|
||||||
|
@ -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();
|
||||||
|
@ -127,8 +127,7 @@ 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
|
||||||
Options:
|
Options:
|
||||||
|
@ -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;
|
||||||
|
@ -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 {
|
||||||
|
Loading…
Reference in New Issue
Block a user