Fix
parent
af72cd4a7a
commit
150c69904b
|
|
@ -51,7 +51,7 @@ jobs:
|
|||
id: k8s-unity-build
|
||||
env:
|
||||
DEBUG: true
|
||||
remoteBuilderBranch: remote-builder/unified-providers
|
||||
cloudRunerBranch: remote-builder/unified-providers
|
||||
with:
|
||||
cloudRunnerCluster: k8s
|
||||
targetPlatform: ${{ matrix.targetPlatform }}
|
||||
|
|
|
|||
|
|
@ -47,10 +47,10 @@ function run() {
|
|||
const buildParameters = yield model_1.BuildParameters.create();
|
||||
const baseImage = new model_1.ImageTag(buildParameters);
|
||||
let builtImage;
|
||||
switch (buildParameters.remoteBuildCluster) {
|
||||
switch (buildParameters.cloudRunnerCluster) {
|
||||
case 'aws':
|
||||
case 'k8s':
|
||||
yield model_1.RemoteBuilder.build(buildParameters, baseImage);
|
||||
yield model_1.CloudRunner.build(buildParameters, baseImage);
|
||||
break;
|
||||
// default and local case
|
||||
default:
|
||||
|
|
@ -229,12 +229,12 @@ class BuildParameters {
|
|||
customParameters: input_1.default.customParameters,
|
||||
sshAgent: input_1.default.sshAgent,
|
||||
chownFilesTo: input_1.default.chownFilesTo,
|
||||
remoteBuildCluster: input_1.default.remoteBuildCluster,
|
||||
cloudRunnerCluster: input_1.default.cloudRunnerCluster,
|
||||
awsBaseStackName: input_1.default.awsBaseStackName,
|
||||
kubeConfig: input_1.default.kubeConfig,
|
||||
githubToken: input_1.default.githubToken,
|
||||
remoteBuildMemory: input_1.default.remoteBuildMemory,
|
||||
remoteBuildCpu: input_1.default.remoteBuildCpu,
|
||||
cloudRunnerMemory: input_1.default.cloudRunnerMemory,
|
||||
cloudRunnerCpu: input_1.default.cloudRunnerCpu,
|
||||
kubeVolumeSize: input_1.default.kubeVolumeSize,
|
||||
kubeVolume: input_1.default.kubeVolume,
|
||||
postBuildSteps: input_1.default.postBuildSteps,
|
||||
|
|
@ -917,7 +917,7 @@ class CloudRunner {
|
|||
CloudRunner.setupDefaultSecrets();
|
||||
try {
|
||||
CloudRunner.setupBuildPlatform();
|
||||
yield this.RemoteBuilderProviderPlatform.setupSharedBuildResources(this.buildGuid, this.buildParams, this.branchName, this.defaultSecrets);
|
||||
yield this.CloudRunnerProviderPlatform.setupSharedBuildResources(this.buildGuid, this.buildParams, this.branchName, this.defaultSecrets);
|
||||
yield CloudRunner.SetupStep();
|
||||
const t2 = Date.now();
|
||||
core.info(`Setup time: ${Math.floor((t2 - t) / 1000)}s`);
|
||||
|
|
@ -937,14 +937,14 @@ class CloudRunner {
|
|||
};
|
||||
return secret;
|
||||
});
|
||||
yield this.RemoteBuilderProviderPlatform.runBuildTask(this.buildGuid, step['image'], step['commands'], `/${buildVolumeFolder}`, `/${buildVolumeFolder}`, [
|
||||
yield this.CloudRunnerProviderPlatform.runBuildTask(this.buildGuid, step['image'], step['commands'], `/${buildVolumeFolder}`, `/${buildVolumeFolder}`, [
|
||||
{
|
||||
name: 'GITHUB_SHA',
|
||||
value: process.env.GITHUB_SHA || '',
|
||||
},
|
||||
], [...this.defaultSecrets, ...stepSecrets]);
|
||||
}
|
||||
yield this.RemoteBuilderProviderPlatform.cleanupSharedBuildResources(this.buildGuid, this.buildParams, this.branchName, this.defaultSecrets);
|
||||
yield this.CloudRunnerProviderPlatform.cleanupSharedBuildResources(this.buildGuid, this.buildParams, this.branchName, this.defaultSecrets);
|
||||
}
|
||||
catch (error) {
|
||||
yield CloudRunner.handleException(error);
|
||||
|
|
@ -971,16 +971,16 @@ class CloudRunner {
|
|||
const purgeRemoteCache = process.env.PURGE_REMOTE_BUILDER_CACHE !== undefined;
|
||||
const initializeSourceRepoForCaching = `${this.builderPathFull}/dist/remote-builder/cloneNoLFS.sh "${this.repoPathFull}" "${targetBuildRepoUrl}" "${testLFSFile}"`;
|
||||
const handleCaching = `${this.builderPathFull}/dist/remote-builder/handleCaching.sh "${this.cacheFolderFull}" "${this.libraryFolderFull}" "${lfsDirectory}" "${purgeRemoteCache}"`;
|
||||
const remoteBuilderBranch = process.env.remoteBuilderBranch ? `--branch "${process.env.remoteBuilderBranch}"` : '';
|
||||
const cloneRemoteBuilder = `git clone -q ${remoteBuilderBranch} ${unityBuilderRepoUrl} ${this.builderPathFull}`;
|
||||
yield this.RemoteBuilderProviderPlatform.runBuildTask(this.buildGuid, 'alpine/git', [
|
||||
const CloudRunnerBranch = process.env.CloudRunnerBranch ? `--branch "${process.env.CloudRunnerBranch}"` : '';
|
||||
const cloneCloudRunner = `git clone -q ${CloudRunnerBranch} ${unityBuilderRepoUrl} ${this.builderPathFull}`;
|
||||
yield this.CloudRunnerProviderPlatform.runBuildTask(this.buildGuid, 'alpine/git', [
|
||||
` printenv
|
||||
apk update -q
|
||||
apk add unzip zip git-lfs jq tree -q
|
||||
mkdir -p ${this.buildPathFull}
|
||||
mkdir -p ${this.builderPathFull}
|
||||
mkdir -p ${this.repoPathFull}
|
||||
${cloneRemoteBuilder}
|
||||
${cloneCloudRunner}
|
||||
echo ' '
|
||||
echo 'Initializing source repository for cloning with caching of LFS files'
|
||||
${initializeSourceRepoForCaching}
|
||||
|
|
@ -1008,7 +1008,7 @@ class CloudRunner {
|
|||
static BuildStep(baseImage) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
core.info('Starting part 2/4 (build unity project)');
|
||||
yield this.RemoteBuilderProviderPlatform.runBuildTask(this.buildGuid, baseImage.toString(), [
|
||||
yield this.CloudRunnerProviderPlatform.runBuildTask(this.buildGuid, baseImage.toString(), [
|
||||
`
|
||||
printenv
|
||||
export GITHUB_WORKSPACE="${this.repoPathFull}"
|
||||
|
|
@ -1028,7 +1028,7 @@ class CloudRunner {
|
|||
return __awaiter(this, void 0, void 0, function* () {
|
||||
core.info('Starting step 3/4 build compression');
|
||||
// Cleanup
|
||||
yield this.RemoteBuilderProviderPlatform.runBuildTask(this.buildGuid, 'alpine', [
|
||||
yield this.CloudRunnerProviderPlatform.runBuildTask(this.buildGuid, 'alpine', [
|
||||
`
|
||||
printenv
|
||||
apk update -q
|
||||
|
|
@ -1055,15 +1055,15 @@ class CloudRunner {
|
|||
});
|
||||
}
|
||||
static setupBuildPlatform() {
|
||||
switch (this.buildParams.remoteBuildCluster) {
|
||||
switch (this.buildParams.cloudRunnerCluster) {
|
||||
case 'aws':
|
||||
core.info('Building with AWS');
|
||||
this.RemoteBuilderProviderPlatform = new aws_build_platform_1.default(this.buildParams);
|
||||
this.CloudRunnerProviderPlatform = new aws_build_platform_1.default(this.buildParams);
|
||||
break;
|
||||
default:
|
||||
case 'k8s':
|
||||
core.info('Building with Kubernetes');
|
||||
this.RemoteBuilderProviderPlatform = new kubernetes_build_platform_1.default(this.buildParams);
|
||||
this.CloudRunnerProviderPlatform = new kubernetes_build_platform_1.default(this.buildParams);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -1138,11 +1138,11 @@ class CloudRunner {
|
|||
return [
|
||||
{
|
||||
name: 'ContainerMemory',
|
||||
value: this.buildParams.remoteBuildMemory,
|
||||
value: this.buildParams.cloudRunnerMemory,
|
||||
},
|
||||
{
|
||||
name: 'ContainerCpu',
|
||||
value: this.buildParams.remoteBuildCpu,
|
||||
value: this.buildParams.cloudRunnerCpu,
|
||||
},
|
||||
{
|
||||
name: 'GITHUB_WORKSPACE',
|
||||
|
|
@ -1206,7 +1206,7 @@ class CloudRunner {
|
|||
return __awaiter(this, void 0, void 0, function* () {
|
||||
core.error(JSON.stringify(error, undefined, 4));
|
||||
core.setFailed('Remote Builder failed');
|
||||
yield this.RemoteBuilderProviderPlatform.cleanupSharedBuildResources(this.buildGuid, this.buildParams, this.branchName, this.defaultSecrets);
|
||||
yield this.CloudRunnerProviderPlatform.cleanupSharedBuildResources(this.buildGuid, this.buildParams, this.branchName, this.defaultSecrets);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -1581,8 +1581,8 @@ class KubernetesJobSpecFactory {
|
|||
workingDir: `/${workingDirectory}`,
|
||||
resources: {
|
||||
requests: {
|
||||
memory: buildParameters.remoteBuildMemory,
|
||||
cpu: buildParameters.remoteBuildCpu,
|
||||
memory: buildParameters.cloudRunnerMemory,
|
||||
cpu: buildParameters.cloudRunnerCpu,
|
||||
},
|
||||
},
|
||||
env: environment,
|
||||
|
|
@ -2286,7 +2286,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||
exports.RemoteBuilder = exports.Versioning = exports.Unity = exports.Project = exports.Platform = exports.Output = exports.ImageTag = exports.Input = exports.Docker = exports.Cache = exports.BuildParameters = exports.Action = void 0;
|
||||
exports.CloudRunner = exports.Versioning = exports.Unity = exports.Project = exports.Platform = exports.Output = exports.ImageTag = exports.Input = exports.Docker = exports.Cache = exports.BuildParameters = exports.Action = void 0;
|
||||
const action_1 = __importDefault(__webpack_require__(89088));
|
||||
exports.Action = action_1.default;
|
||||
const build_parameters_1 = __importDefault(__webpack_require__(80787));
|
||||
|
|
@ -2310,7 +2310,7 @@ exports.Unity = unity_1.default;
|
|||
const versioning_1 = __importDefault(__webpack_require__(88729));
|
||||
exports.Versioning = versioning_1.default;
|
||||
const cloud_runner_1 = __importDefault(__webpack_require__(79144));
|
||||
exports.RemoteBuilder = cloud_runner_1.default;
|
||||
exports.CloudRunner = cloud_runner_1.default;
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
|
@ -2398,8 +2398,8 @@ class Input {
|
|||
static get postBuildSteps() {
|
||||
return core.getInput('postBuildSteps');
|
||||
}
|
||||
static get remoteBuildCluster() {
|
||||
return core.getInput('remoteBuildCluster') || '';
|
||||
static get cloudRunnerCluster() {
|
||||
return core.getInput('cloudRunnerCluster') || '';
|
||||
}
|
||||
static get awsBaseStackName() {
|
||||
return core.getInput('awsBaseStackName') || '';
|
||||
|
|
@ -2410,11 +2410,11 @@ class Input {
|
|||
static get githubToken() {
|
||||
return core.getInput('githubToken') || '';
|
||||
}
|
||||
static get remoteBuildMemory() {
|
||||
return core.getInput('remoteBuildMemory') || '750M';
|
||||
static get cloudRunnerMemory() {
|
||||
return core.getInput('cloudRunnerMemory') || '750M';
|
||||
}
|
||||
static get remoteBuildCpu() {
|
||||
return core.getInput('remoteBuildCpu') || '1.0';
|
||||
static get cloudRunnerCpu() {
|
||||
return core.getInput('cloudRunnerCpu') || '1.0';
|
||||
}
|
||||
static get kubeVolumeSize() {
|
||||
return core.getInput('kubeVolumeSize') || '5Gi';
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -3,7 +3,7 @@
|
|||
cacheFolderFull=$1
|
||||
libraryFolderFull=$2
|
||||
gitLFSDestinationFolder=$3
|
||||
purgeRemoteBuilderCache=$4
|
||||
purgeCloudRunnerCache=$4
|
||||
|
||||
cacheFolderWithBranch="$cacheFolderFull"
|
||||
lfsCacheFolder="$cacheFolderFull/lfs"
|
||||
|
|
@ -78,7 +78,7 @@ echo "copied $LFS_ASSETS_HASH to $lfsCacheFolder"
|
|||
echo ' '
|
||||
|
||||
# purge cache
|
||||
if [ "$purgeRemoteBuilderCache" == "true" ]; then
|
||||
if [ "$purgeCloudRunnerCache" == "true" ]; then
|
||||
echo "purging the entire cache"
|
||||
rm -r "$cacheFolderFull"
|
||||
echo ' '
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import * as core from '@actions/core';
|
||||
import { Action, BuildParameters, Cache, Docker, ImageTag, Output, RemoteBuilder } from './model';
|
||||
import { Action, BuildParameters, Cache, Docker, ImageTag, Output, CloudRunner } from './model';
|
||||
|
||||
async function run() {
|
||||
try {
|
||||
|
|
@ -12,10 +12,10 @@ async function run() {
|
|||
const baseImage = new ImageTag(buildParameters);
|
||||
let builtImage;
|
||||
|
||||
switch (buildParameters.remoteBuildCluster) {
|
||||
switch (buildParameters.cloudRunnerCluster) {
|
||||
case 'aws':
|
||||
case 'k8s':
|
||||
await RemoteBuilder.build(buildParameters, baseImage);
|
||||
await CloudRunner.build(buildParameters, baseImage);
|
||||
break;
|
||||
|
||||
// default and local case
|
||||
|
|
|
|||
|
|
@ -23,12 +23,12 @@ class BuildParameters {
|
|||
public androidKeyaliasPass!: string;
|
||||
public customParameters!: string;
|
||||
public sshAgent!: string;
|
||||
public remoteBuildCluster!: string;
|
||||
public cloudRunnerCluster!: string;
|
||||
public awsBaseStackName!: string;
|
||||
public kubeConfig!: string;
|
||||
public githubToken!: string;
|
||||
public remoteBuildMemory!: string;
|
||||
public remoteBuildCpu!: string;
|
||||
public cloudRunnerMemory!: string;
|
||||
public cloudRunnerCpu!: string;
|
||||
public kubeVolumeSize!: string;
|
||||
public kubeVolume!: string;
|
||||
public chownFilesTo!: string;
|
||||
|
|
@ -65,12 +65,12 @@ class BuildParameters {
|
|||
customParameters: Input.customParameters,
|
||||
sshAgent: Input.sshAgent,
|
||||
chownFilesTo: Input.chownFilesTo,
|
||||
remoteBuildCluster: Input.remoteBuildCluster,
|
||||
cloudRunnerCluster: Input.cloudRunnerCluster,
|
||||
awsBaseStackName: Input.awsBaseStackName,
|
||||
kubeConfig: Input.kubeConfig,
|
||||
githubToken: Input.githubToken,
|
||||
remoteBuildMemory: Input.remoteBuildMemory,
|
||||
remoteBuildCpu: Input.remoteBuildCpu,
|
||||
cloudRunnerMemory: Input.cloudRunnerMemory,
|
||||
cloudRunnerCpu: Input.cloudRunnerCpu,
|
||||
kubeVolumeSize: Input.kubeVolumeSize,
|
||||
kubeVolume: Input.kubeVolume,
|
||||
postBuildSteps: Input.postBuildSteps,
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
import * as SDK from 'aws-sdk';
|
||||
import { customAlphabet } from 'nanoid';
|
||||
import RemoteBuilderSecret from './cloud-runner-secret';
|
||||
import RemoteBuilderEnvironmentVariable from './cloud-runner-environment-variable';
|
||||
import CloudRunnerSecret from './cloud-runner-secret';
|
||||
import CloudRunnerEnvironmentVariable from './cloud-runner-environment-variable';
|
||||
import * as fs from 'fs';
|
||||
import * as core from '@actions/core';
|
||||
import CloudRunnerTaskDef from './cloud-runner-task-def';
|
||||
import RemoteBuilderConstants from './cloud-runner-constants';
|
||||
import CloudRunnerConstants from './cloud-runner-constants';
|
||||
import AWSBuildRunner from './aws-build-runner';
|
||||
import { CloudRunnerProviderInterface } from './cloud-runner-provider-interface';
|
||||
import BuildParameters from '../build-parameters';
|
||||
|
|
@ -44,8 +44,8 @@ class AWSBuildEnvironment implements CloudRunnerProviderInterface {
|
|||
commands: string[],
|
||||
mountdir: string,
|
||||
workingdir: string,
|
||||
environment: RemoteBuilderEnvironmentVariable[],
|
||||
secrets: RemoteBuilderSecret[],
|
||||
environment: CloudRunnerEnvironmentVariable[],
|
||||
secrets: CloudRunnerSecret[],
|
||||
): Promise<void> {
|
||||
const ECS = new SDK.ECS();
|
||||
const CF = new SDK.CloudFormation();
|
||||
|
|
@ -115,9 +115,9 @@ class AWSBuildEnvironment implements CloudRunnerProviderInterface {
|
|||
commands: string[],
|
||||
mountdir: string,
|
||||
workingdir: string,
|
||||
secrets: RemoteBuilderSecret[],
|
||||
secrets: CloudRunnerSecret[],
|
||||
): Promise<CloudRunnerTaskDef> {
|
||||
const logGuid = customAlphabet(RemoteBuilderConstants.alphabet, 9)();
|
||||
const logGuid = customAlphabet(CloudRunnerConstants.alphabet, 9)();
|
||||
commands[1] += `
|
||||
echo "${logGuid}"
|
||||
`;
|
||||
|
|
@ -323,7 +323,7 @@ class AWSBuildEnvironment implements CloudRunnerProviderInterface {
|
|||
CF: SDK.CloudFormation,
|
||||
taskDefStackName: string,
|
||||
taskDefCloudFormation: string,
|
||||
secrets: RemoteBuilderSecret[],
|
||||
secrets: CloudRunnerSecret[],
|
||||
) {
|
||||
core.info(JSON.stringify(secrets, undefined, 4));
|
||||
core.info(taskDefCloudFormation);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import * as AWS from 'aws-sdk';
|
||||
import RemoteBuilderEnvironmentVariable from './cloud-runner-environment-variable';
|
||||
import CloudRunnerEnvironmentVariable from './cloud-runner-environment-variable';
|
||||
import * as core from '@actions/core';
|
||||
import CloudRunnerTaskDef from './cloud-runner-task-def';
|
||||
import * as zlib from 'zlib';
|
||||
|
|
@ -9,7 +9,7 @@ class AWSBuildRunner {
|
|||
taskDef: CloudRunnerTaskDef,
|
||||
ECS: AWS.ECS,
|
||||
CF: AWS.CloudFormation,
|
||||
environment: RemoteBuilderEnvironmentVariable[],
|
||||
environment: CloudRunnerEnvironmentVariable[],
|
||||
buildGuid: string,
|
||||
commands: string[],
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
import AWSBuildPlatform from './aws-build-platform';
|
||||
import * as core from '@actions/core';
|
||||
import { BuildParameters } from '..';
|
||||
import RemoteBuilderNamespace from './cloud-runner-namespace';
|
||||
import RemoteBuilderSecret from './cloud-runner-secret';
|
||||
import CloudRunnerNamespace from './cloud-runner-namespace';
|
||||
import CloudRunnerSecret from './cloud-runner-secret';
|
||||
import { CloudRunnerProviderInterface } from './cloud-runner-provider-interface';
|
||||
import Kubernetes from './kubernetes-build-platform';
|
||||
import RemoteBuilderEnvironmentVariable from './cloud-runner-environment-variable';
|
||||
import CloudRunnerEnvironmentVariable from './cloud-runner-environment-variable';
|
||||
import ImageEnvironmentFactory from '../image-environment-factory';
|
||||
import YAML from 'yaml';
|
||||
const repositoryFolder = 'repo';
|
||||
|
|
@ -13,9 +13,9 @@ const buildVolumeFolder = 'data';
|
|||
const cacheFolder = 'cache';
|
||||
|
||||
class CloudRunner {
|
||||
static RemoteBuilderProviderPlatform: CloudRunnerProviderInterface;
|
||||
static CloudRunnerProviderPlatform: CloudRunnerProviderInterface;
|
||||
private static buildParams: BuildParameters;
|
||||
private static defaultSecrets: RemoteBuilderSecret[];
|
||||
private static defaultSecrets: CloudRunnerSecret[];
|
||||
private static buildGuid: string;
|
||||
private static branchName: string;
|
||||
private static buildPathFull: string;
|
||||
|
|
@ -35,7 +35,7 @@ class CloudRunner {
|
|||
|
||||
static async build(buildParameters: BuildParameters, baseImage) {
|
||||
const t = Date.now();
|
||||
CloudRunner.buildGuid = RemoteBuilderNamespace.generateBuildName(
|
||||
CloudRunner.buildGuid = CloudRunnerNamespace.generateBuildName(
|
||||
CloudRunner.readRunNumber(),
|
||||
buildParameters.platform,
|
||||
);
|
||||
|
|
@ -45,7 +45,7 @@ class CloudRunner {
|
|||
CloudRunner.setupDefaultSecrets();
|
||||
try {
|
||||
CloudRunner.setupBuildPlatform();
|
||||
await this.RemoteBuilderProviderPlatform.setupSharedBuildResources(
|
||||
await this.CloudRunnerProviderPlatform.setupSharedBuildResources(
|
||||
this.buildGuid,
|
||||
this.buildParams,
|
||||
this.branchName,
|
||||
|
|
@ -62,15 +62,15 @@ class CloudRunner {
|
|||
this.buildParams.postBuildSteps = YAML.parse(this.buildParams.postBuildSteps);
|
||||
core.info(`Post build steps ${JSON.stringify(this.buildParams.postBuildSteps, undefined, 4)}`);
|
||||
for (const step of this.buildParams.postBuildSteps) {
|
||||
const stepSecrets: RemoteBuilderSecret[] = step.secrets.map((x) => {
|
||||
const secret: RemoteBuilderSecret = {
|
||||
const stepSecrets: CloudRunnerSecret[] = step.secrets.map((x) => {
|
||||
const secret: CloudRunnerSecret = {
|
||||
ParameterKey: x.name,
|
||||
EnvironmentVariable: x.name,
|
||||
ParameterValue: x.value,
|
||||
};
|
||||
return secret;
|
||||
});
|
||||
await this.RemoteBuilderProviderPlatform.runBuildTask(
|
||||
await this.CloudRunnerProviderPlatform.runBuildTask(
|
||||
this.buildGuid,
|
||||
step['image'],
|
||||
step['commands'],
|
||||
|
|
@ -85,7 +85,7 @@ class CloudRunner {
|
|||
[...this.defaultSecrets, ...stepSecrets],
|
||||
);
|
||||
}
|
||||
await this.RemoteBuilderProviderPlatform.cleanupSharedBuildResources(
|
||||
await this.CloudRunnerProviderPlatform.cleanupSharedBuildResources(
|
||||
this.buildGuid,
|
||||
this.buildParams,
|
||||
this.branchName,
|
||||
|
|
@ -119,9 +119,9 @@ class CloudRunner {
|
|||
const purgeRemoteCache = process.env.PURGE_REMOTE_BUILDER_CACHE !== undefined;
|
||||
const initializeSourceRepoForCaching = `${this.builderPathFull}/dist/remote-builder/cloneNoLFS.sh "${this.repoPathFull}" "${targetBuildRepoUrl}" "${testLFSFile}"`;
|
||||
const handleCaching = `${this.builderPathFull}/dist/remote-builder/handleCaching.sh "${this.cacheFolderFull}" "${this.libraryFolderFull}" "${lfsDirectory}" "${purgeRemoteCache}"`;
|
||||
const remoteBuilderBranch = process.env.remoteBuilderBranch ? `--branch "${process.env.remoteBuilderBranch}"` : '';
|
||||
const cloneRemoteBuilder = `git clone -q ${remoteBuilderBranch} ${unityBuilderRepoUrl} ${this.builderPathFull}`;
|
||||
await this.RemoteBuilderProviderPlatform.runBuildTask(
|
||||
const CloudRunnerBranch = process.env.CloudRunnerBranch ? `--branch "${process.env.CloudRunnerBranch}"` : '';
|
||||
const cloneCloudRunner = `git clone -q ${CloudRunnerBranch} ${unityBuilderRepoUrl} ${this.builderPathFull}`;
|
||||
await this.CloudRunnerProviderPlatform.runBuildTask(
|
||||
this.buildGuid,
|
||||
'alpine/git',
|
||||
[
|
||||
|
|
@ -131,7 +131,7 @@ class CloudRunner {
|
|||
mkdir -p ${this.buildPathFull}
|
||||
mkdir -p ${this.builderPathFull}
|
||||
mkdir -p ${this.repoPathFull}
|
||||
${cloneRemoteBuilder}
|
||||
${cloneCloudRunner}
|
||||
echo ' '
|
||||
echo 'Initializing source repository for cloning with caching of LFS files'
|
||||
${initializeSourceRepoForCaching}
|
||||
|
|
@ -163,7 +163,7 @@ class CloudRunner {
|
|||
|
||||
private static async BuildStep(baseImage: any) {
|
||||
core.info('Starting part 2/4 (build unity project)');
|
||||
await this.RemoteBuilderProviderPlatform.runBuildTask(
|
||||
await this.CloudRunnerProviderPlatform.runBuildTask(
|
||||
this.buildGuid,
|
||||
baseImage.toString(),
|
||||
[
|
||||
|
|
@ -190,7 +190,7 @@ class CloudRunner {
|
|||
private static async CompressionStep() {
|
||||
core.info('Starting step 3/4 build compression');
|
||||
// Cleanup
|
||||
await this.RemoteBuilderProviderPlatform.runBuildTask(
|
||||
await this.CloudRunnerProviderPlatform.runBuildTask(
|
||||
this.buildGuid,
|
||||
'alpine',
|
||||
[
|
||||
|
|
@ -225,15 +225,15 @@ class CloudRunner {
|
|||
}
|
||||
|
||||
private static setupBuildPlatform() {
|
||||
switch (this.buildParams.remoteBuildCluster) {
|
||||
switch (this.buildParams.cloudRunnerCluster) {
|
||||
case 'aws':
|
||||
core.info('Building with AWS');
|
||||
this.RemoteBuilderProviderPlatform = new AWSBuildPlatform(this.buildParams);
|
||||
this.CloudRunnerProviderPlatform = new AWSBuildPlatform(this.buildParams);
|
||||
break;
|
||||
default:
|
||||
case 'k8s':
|
||||
core.info('Building with Kubernetes');
|
||||
this.RemoteBuilderProviderPlatform = new Kubernetes(this.buildParams);
|
||||
this.CloudRunnerProviderPlatform = new Kubernetes(this.buildParams);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -312,15 +312,15 @@ class CloudRunner {
|
|||
);
|
||||
}
|
||||
|
||||
private static readBuildEnvironmentVariables(): RemoteBuilderEnvironmentVariable[] {
|
||||
private static readBuildEnvironmentVariables(): CloudRunnerEnvironmentVariable[] {
|
||||
return [
|
||||
{
|
||||
name: 'ContainerMemory',
|
||||
value: this.buildParams.remoteBuildMemory,
|
||||
value: this.buildParams.cloudRunnerMemory,
|
||||
},
|
||||
{
|
||||
name: 'ContainerCpu',
|
||||
value: this.buildParams.remoteBuildCpu,
|
||||
value: this.buildParams.cloudRunnerCpu,
|
||||
},
|
||||
{
|
||||
name: 'GITHUB_WORKSPACE',
|
||||
|
|
@ -385,7 +385,7 @@ class CloudRunner {
|
|||
private static async handleException(error: unknown) {
|
||||
core.error(JSON.stringify(error, undefined, 4));
|
||||
core.setFailed('Remote Builder failed');
|
||||
await this.RemoteBuilderProviderPlatform.cleanupSharedBuildResources(
|
||||
await this.CloudRunnerProviderPlatform.cleanupSharedBuildResources(
|
||||
this.buildGuid,
|
||||
this.buildParams,
|
||||
this.branchName,
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@ import * as k8s from '@kubernetes/client-node';
|
|||
import { BuildParameters } from '..';
|
||||
import * as core from '@actions/core';
|
||||
import { CloudRunnerProviderInterface } from './cloud-runner-provider-interface';
|
||||
import RemoteBuilderSecret from './cloud-runner-secret';
|
||||
import CloudRunnerSecret from './cloud-runner-secret';
|
||||
import KubernetesStorage from './kubernetes-storage';
|
||||
import RemoteBuilderEnvironmentVariable from './cloud-runner-environment-variable';
|
||||
import CloudRunnerEnvironmentVariable from './cloud-runner-environment-variable';
|
||||
import KubernetesLogging from './kubernetes-logging';
|
||||
import KubernetesSecret from './kubernetes-secret';
|
||||
import KubernetesUtilities from './kubernetes-utils';
|
||||
|
|
@ -77,8 +77,8 @@ class Kubernetes implements CloudRunnerProviderInterface {
|
|||
commands: string[],
|
||||
mountdir: string,
|
||||
workingdir: string,
|
||||
environment: RemoteBuilderEnvironmentVariable[],
|
||||
secrets: RemoteBuilderSecret[],
|
||||
environment: CloudRunnerEnvironmentVariable[],
|
||||
secrets: CloudRunnerSecret[],
|
||||
): Promise<void> {
|
||||
try {
|
||||
// setup
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import BuildParameters from '../build-parameters';
|
||||
import RemoteBuilderEnvironmentVariable from './cloud-runner-environment-variable';
|
||||
import CloudRunnerEnvironmentVariable from './cloud-runner-environment-variable';
|
||||
|
||||
class KubernetesJobSpecFactory {
|
||||
static getJobSpec(
|
||||
|
|
@ -7,7 +7,7 @@ class KubernetesJobSpecFactory {
|
|||
image: string,
|
||||
mountdir: string,
|
||||
workingDirectory: string,
|
||||
environment: RemoteBuilderEnvironmentVariable[],
|
||||
environment: CloudRunnerEnvironmentVariable[],
|
||||
buildGuid: string,
|
||||
buildParameters: BuildParameters,
|
||||
secretName,
|
||||
|
|
@ -109,8 +109,8 @@ class KubernetesJobSpecFactory {
|
|||
workingDir: `/${workingDirectory}`,
|
||||
resources: {
|
||||
requests: {
|
||||
memory: buildParameters.remoteBuildMemory,
|
||||
cpu: buildParameters.remoteBuildCpu,
|
||||
memory: buildParameters.cloudRunnerMemory,
|
||||
cpu: buildParameters.cloudRunnerCpu,
|
||||
},
|
||||
},
|
||||
env: environment,
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
import { CoreV1Api } from '@kubernetes/client-node';
|
||||
import RemoteBuilderSecret from './cloud-runner-secret';
|
||||
import CloudRunnerSecret from './cloud-runner-secret';
|
||||
import * as k8s from '@kubernetes/client-node';
|
||||
const base64 = require('base-64');
|
||||
|
||||
class KubernetesSecret {
|
||||
static async createSecret(
|
||||
secrets: RemoteBuilderSecret[],
|
||||
secrets: CloudRunnerSecret[],
|
||||
secretName: string,
|
||||
namespace: string,
|
||||
kubeClient: CoreV1Api,
|
||||
|
|
|
|||
|
|
@ -23,5 +23,5 @@ export {
|
|||
Project,
|
||||
Unity,
|
||||
Versioning,
|
||||
CloudRunner as RemoteBuilder,
|
||||
CloudRunner as CloudRunner,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -97,8 +97,8 @@ class Input {
|
|||
return core.getInput('postBuildSteps');
|
||||
}
|
||||
|
||||
static get remoteBuildCluster() {
|
||||
return core.getInput('remoteBuildCluster') || '';
|
||||
static get cloudRunnerCluster() {
|
||||
return core.getInput('cloudRunnerCluster') || '';
|
||||
}
|
||||
|
||||
static get awsBaseStackName() {
|
||||
|
|
@ -113,12 +113,12 @@ class Input {
|
|||
return core.getInput('githubToken') || '';
|
||||
}
|
||||
|
||||
static get remoteBuildMemory() {
|
||||
return core.getInput('remoteBuildMemory') || '750M';
|
||||
static get cloudRunnerMemory() {
|
||||
return core.getInput('cloudRunnerMemory') || '750M';
|
||||
}
|
||||
|
||||
static get remoteBuildCpu() {
|
||||
return core.getInput('remoteBuildCpu') || '1.0';
|
||||
static get cloudRunnerCpu() {
|
||||
return core.getInput('cloudRunnerCpu') || '1.0';
|
||||
}
|
||||
|
||||
static get kubeVolumeSize() {
|
||||
|
|
|
|||
Loading…
Reference in New Issue