Refactor id and uid to Guid for consistency

pull/289/head
Frostebite 2021-08-15 21:59:58 +00:00 committed by GitHub
parent 4dcbc8c6fd
commit 21cb4562cc
8 changed files with 101 additions and 101 deletions

96
dist/index.js vendored
View File

@ -900,7 +900,7 @@ class AWSBuildEnvironment {
}
cleanupSharedBuildResources(
// eslint-disable-next-line no-unused-vars
buildUid,
buildGuid,
// eslint-disable-next-line no-unused-vars
buildParameters,
// eslint-disable-next-line no-unused-vars
@ -909,7 +909,7 @@ class AWSBuildEnvironment {
defaultSecretsArray) { }
setupSharedBuildResources(
// eslint-disable-next-line no-unused-vars
buildUid,
buildGuid,
// eslint-disable-next-line no-unused-vars
buildParameters,
// eslint-disable-next-line no-unused-vars
@ -957,14 +957,14 @@ class AWSBuildEnvironment {
template = [template.slice(0, index), insertion, template.slice(index)].join('');
return template;
}
setupCloudFormations(CF, buildUid, image, entrypoint, commands, mountdir, workingdir, secrets) {
setupCloudFormations(CF, buildGuid, image, entrypoint, commands, mountdir, workingdir, secrets) {
return __awaiter(this, void 0, void 0, function* () {
const logid = nanoid_1.customAlphabet(remote_builder_constants_1.default.alphabet, 9)();
const logGuid = nanoid_1.customAlphabet(remote_builder_constants_1.default.alphabet, 9)();
commands[1] += `
echo "${logid}"
echo "${logGuid}"
`;
yield this.setupBaseStack(CF);
const taskDefStackName = `${this.baseStackName}-${buildUid}`;
const taskDefStackName = `${this.baseStackName}-${buildGuid}`;
let taskDefCloudFormation = this.readTaskCloudFormationTemplate();
const cleanupTaskDefStackName = `${taskDefStackName}-cleanup`;
const cleanupCloudFormation = fs.readFileSync(`${__dirname}/cloud-formations/cloudformation-stack-ttl.yml`, 'utf8');
@ -1015,7 +1015,7 @@ class AWSBuildEnvironment {
},
{
ParameterKey: 'BUILDID',
ParameterValue: buildUid,
ParameterValue: buildGuid,
},
...mappedSecrets,
],
@ -1040,7 +1040,7 @@ class AWSBuildEnvironment {
},
{
ParameterKey: 'BUILDID',
ParameterValue: buildUid,
ParameterValue: buildGuid,
},
],
}).promise();
@ -1063,7 +1063,7 @@ class AWSBuildEnvironment {
ttlCloudFormation: cleanupCloudFormation,
taskDefResources,
baseResources,
logid,
logid: logGuid,
};
});
}
@ -1211,7 +1211,7 @@ const AWS = __importStar(__webpack_require__(71786));
const core = __importStar(__webpack_require__(42186));
const zlib = __importStar(__webpack_require__(78761));
class AWSBuildRunner {
static runTask(taskDef, ECS, CF, environment, buildUid, commands) {
static runTask(taskDef, ECS, CF, environment, buildGuid, commands) {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
return __awaiter(this, void 0, void 0, function* () {
const cluster = ((_b = (_a = taskDef.baseResources) === null || _a === void 0 ? void 0 : _a.find((x) => x.LogicalResourceId === 'ECSCluster')) === null || _b === void 0 ? void 0 : _b.PhysicalResourceId) || '';
@ -1228,7 +1228,7 @@ class AWSBuildRunner {
containerOverrides: [
{
name: taskDef.taskDefStackName,
environment: [...environment, { name: 'BUILDID', value: buildUid }],
environment: [...environment, { name: 'BUILDID', value: buildGuid }],
command: ['-c', ...commands],
},
],
@ -1404,7 +1404,7 @@ const kubernetes_cleanup_cronjob_1 = __importDefault(__webpack_require__(82974))
const kubernetes_service_account_1 = __importDefault(__webpack_require__(671));
class Kubernetes {
constructor(buildParameters) {
this.buildId = '';
this.buildGuid = '';
this.pvcName = '';
this.secretName = '';
this.jobName = '';
@ -1421,16 +1421,16 @@ class Kubernetes {
this.namespace = 'default';
this.buildParameters = buildParameters;
}
setupSharedBuildResources(buildUid, buildParameters,
setupSharedBuildResources(buildGuid, buildParameters,
// eslint-disable-next-line no-unused-vars
branchName,
// eslint-disable-next-line no-unused-vars
defaultSecretsArray) {
return __awaiter(this, void 0, void 0, function* () {
try {
this.pvcName = `unity-builder-pvc-${buildUid}`;
this.cleanupCronJobName = `unity-builder-cronjob-${buildUid}`;
this.serviceAccountName = `service-account-${buildUid}`;
this.pvcName = `unity-builder-pvc-${buildGuid}`;
this.cleanupCronJobName = `unity-builder-cronjob-${buildGuid}`;
this.serviceAccountName = `service-account-${buildGuid}`;
yield kubernetes_storage_1.default.createPersistentVolumeClaim(buildParameters, this.pvcName, this.kubeClient, this.namespace);
yield kubernetes_service_account_1.default.createServiceAccount(this.serviceAccountName, this.namespace, this.kubeClient);
yield kubernetes_cleanup_cronjob_1.default.createCleanupCronJob(this.kubeClientBatchBeta, this.cleanupCronJobName, this.serviceAccountName, this.namespace);
@ -1440,15 +1440,15 @@ class Kubernetes {
}
});
}
runBuildTask(buildId, image, commands, mountdir, workingdir, environment, secrets) {
runBuildTask(buildGuid, image, commands, mountdir, workingdir, environment, secrets) {
return __awaiter(this, void 0, void 0, function* () {
try {
// setup
this.buildId = buildId;
this.secretName = `build-credentials-${buildId}`;
this.jobName = `unity-builder-job-${buildId}`;
this.buildGuid = buildGuid;
this.secretName = `build-credentials-${buildGuid}`;
this.jobName = `unity-builder-job-${buildGuid}`;
yield kubernetes_secret_1.default.createSecret(secrets, this.secretName, this.namespace, this.kubeClient);
const jobSpec = kubernetes_job_spec_factory_1.default.getJobSpec(commands, image, mountdir, workingdir, environment, this.buildId, this.buildParameters, this.secretName, this.pvcName, this.jobName, k8s);
const jobSpec = kubernetes_job_spec_factory_1.default.getJobSpec(commands, image, mountdir, workingdir, environment, this.buildGuid, this.buildParameters, this.secretName, this.pvcName, this.jobName, k8s);
//run
core.info('Creating build job');
yield this.kubeClientBatch.createNamespacedJob(this.namespace, jobSpec);
@ -1501,7 +1501,7 @@ class Kubernetes {
}
cleanupSharedBuildResources(
// eslint-disable-next-line no-unused-vars
buildUid,
buildGuid,
// eslint-disable-next-line no-unused-vars
buildParameters,
// eslint-disable-next-line no-unused-vars
@ -1622,11 +1622,11 @@ exports.default = KubernetesCleanupCronJob;
Object.defineProperty(exports, "__esModule", ({ value: true }));
class KubernetesJobSpecFactory {
static getJobSpec(command, image, mountdir, workingDirectory, environment, buildId, buildParameters, secretName, pvcName, jobName, k8s) {
static getJobSpec(command, image, mountdir, workingDirectory, environment, buildGuid, buildParameters, secretName, pvcName, jobName, k8s) {
environment.push(...[
{
name: 'GITHUB_SHA',
value: buildId,
value: buildGuid,
},
{
name: 'GITHUB_WORKSPACE',
@ -1684,7 +1684,7 @@ class KubernetesJobSpecFactory {
name: jobName,
labels: {
app: 'unity-builder',
buildId,
buildGuid,
},
};
job.spec = {
@ -2217,14 +2217,14 @@ class RemoteBuilder {
static build(buildParameters, baseImage) {
return __awaiter(this, void 0, void 0, function* () {
const t = Date.now();
RemoteBuilder.buildId = remote_builder_namespace_1.default.generateBuildName(RemoteBuilder.readRunNumber(), buildParameters.platform);
RemoteBuilder.buildGuid = remote_builder_namespace_1.default.generateBuildName(RemoteBuilder.readRunNumber(), buildParameters.platform);
RemoteBuilder.buildParams = buildParameters;
RemoteBuilder.setupBranchName();
RemoteBuilder.setupFolderVariables();
RemoteBuilder.setupDefaultSecrets();
try {
RemoteBuilder.setupBuildPlatform();
yield this.RemoteBuilderProviderPlatform.setupSharedBuildResources(this.buildId, this.buildParams, this.branchName, this.defaultSecrets);
yield this.RemoteBuilderProviderPlatform.setupSharedBuildResources(this.buildGuid, this.buildParams, this.branchName, this.defaultSecrets);
yield RemoteBuilder.SetupStep();
const t2 = Date.now();
core.info(`Setup time: ${Math.floor((t2 - t) / 1000)}`);
@ -2235,7 +2235,7 @@ class RemoteBuilder {
this.buildParams.postBuildSteps = yaml_1.default.parse(this.buildParams.postBuildSteps);
core.info(`Post build steps ${JSON.stringify(this.buildParams.postBuildSteps, undefined, 4)}`);
for (const step of this.buildParams.postBuildSteps) {
yield this.RemoteBuilderProviderPlatform.runBuildTask(this.buildId, step['image'], step['commands'], `/${buildVolumeFolder}`, `/${buildVolumeFolder}`, [
yield this.RemoteBuilderProviderPlatform.runBuildTask(this.buildGuid, step['image'], step['commands'], `/${buildVolumeFolder}`, `/${buildVolumeFolder}`, [
{
name: 'GITHUB_SHA',
value: process.env.GITHUB_SHA || '',
@ -2246,7 +2246,7 @@ class RemoteBuilder {
yield RemoteBuilder.UploadArtifacts();
if (this.SteamDeploy)
yield RemoteBuilder.DeployToSteam();
yield this.RemoteBuilderProviderPlatform.cleanupSharedBuildResources(this.buildId, this.buildParams, this.branchName, this.defaultSecrets);
yield this.RemoteBuilderProviderPlatform.cleanupSharedBuildResources(this.buildGuid, this.buildParams, this.branchName, this.defaultSecrets);
}
catch (error) {
yield RemoteBuilder.handleException(error);
@ -2255,7 +2255,7 @@ class RemoteBuilder {
});
}
static setupFolderVariables() {
this.buildPathFull = `/${buildVolumeFolder}/${this.buildId}`;
this.buildPathFull = `/${buildVolumeFolder}/${this.buildGuid}`;
this.builderPathFull = `${this.buildPathFull}/builder`;
this.steamPathFull = `${this.buildPathFull}/steam`;
this.repoPathFull = `${this.buildPathFull}/${repositoryFolder}`;
@ -2274,7 +2274,7 @@ class RemoteBuilder {
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}"`;
yield this.RemoteBuilderProviderPlatform.runBuildTask(this.buildId, 'alpine/git', [
yield this.RemoteBuilderProviderPlatform.runBuildTask(this.buildGuid, 'alpine/git', [
` printenv
#
apk update -q
@ -2322,7 +2322,7 @@ class RemoteBuilder {
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.buildId, baseImage.toString(), [
yield this.RemoteBuilderProviderPlatform.runBuildTask(this.buildGuid, baseImage.toString(), [
`
printenv
export GITHUB_WORKSPACE="${this.projectPathFull}"
@ -2341,18 +2341,18 @@ class RemoteBuilder {
return __awaiter(this, void 0, void 0, function* () {
core.info('Starting step 3/4 build compression');
// Cleanup
yield this.RemoteBuilderProviderPlatform.runBuildTask(this.buildId, 'alpine', [
yield this.RemoteBuilderProviderPlatform.runBuildTask(this.buildGuid, 'alpine', [
`
printenv
apk update -q
apk add zip -q
cd "${this.libraryFolderFull}"
zip -r "lib-${this.buildId}.zip" "${this.libraryFolderFull}"
mv "lib-${this.buildId}.zip" "${this.cacheFolderFull}/lib"
zip -r "lib-${this.buildGuid}.zip" "${this.libraryFolderFull}"
mv "lib-${this.buildGuid}.zip" "${this.cacheFolderFull}/lib"
cd "${this.projectPathFull}"
ls -lh "${this.projectPathFull}"
zip -r "build-${this.buildId}.zip" "${this.projectPathFull}/${RemoteBuilder.buildParams.buildPath}"
mv "build-${this.buildId}.zip" "/${buildVolumeFolder}/${this.buildId}/build-${this.buildId}.zip"
zip -r "build-${this.buildGuid}.zip" "${this.projectPathFull}/${RemoteBuilder.buildParams.buildPath}"
mv "build-${this.buildGuid}.zip" "/${buildVolumeFolder}/${this.buildGuid}/build-${this.buildGuid}.zip"
`,
], `/${buildVolumeFolder}`, `/${buildVolumeFolder}`, [
{
@ -2366,12 +2366,12 @@ class RemoteBuilder {
static UploadArtifacts() {
return __awaiter(this, void 0, void 0, function* () {
core.info('Starting step 4/4 upload build to s3');
yield this.RemoteBuilderProviderPlatform.runBuildTask(this.buildId, 'amazon/aws-cli', [
yield this.RemoteBuilderProviderPlatform.runBuildTask(this.buildGuid, 'amazon/aws-cli', [
`
aws s3 cp ${this.buildId}/build-${this.buildId}.zip "s3://${this.buildParams.awsBaseStackName}-storage/"
aws s3 cp ${this.buildGuid}/build-${this.buildGuid}.zip "s3://${this.buildParams.awsBaseStackName}-storage/"
# no need to upload Library cache for now
# aws s3 cp "/${buildVolumeFolder}/${cacheFolder}/$branch/lib-${this.buildId}.zip" "s3://${this.buildParams.awsBaseStackName}-storage/"
${this.SteamDeploy ? '#' : ''} rm -r ${this.buildId}
# aws s3 cp "/${buildVolumeFolder}/${cacheFolder}/$branch/lib-${this.buildGuid}.zip" "s3://${this.buildParams.awsBaseStackName}-storage/"
${this.SteamDeploy ? '#' : ''} rm -r ${this.buildGuid}
`,
], `/${buildVolumeFolder}`, `/${buildVolumeFolder}/`, RemoteBuilder.readUploadArtifactEnvironmentVariables(), RemoteBuilder.readUploadArtifactsSecrets());
});
@ -2379,18 +2379,18 @@ class RemoteBuilder {
static DeployToSteam() {
return __awaiter(this, void 0, void 0, function* () {
core.info('Starting steam deployment');
yield this.RemoteBuilderProviderPlatform.runBuildTask(this.buildId, 'cm2network/steamcmd:root', [
yield this.RemoteBuilderProviderPlatform.runBuildTask(this.buildGuid, 'cm2network/steamcmd:root', [
`
ls
ls /
cp -r /${buildVolumeFolder}/${this.buildId}/steam/action/entrypoint.sh /entrypoint.sh;
cp -r /${buildVolumeFolder}/${this.buildId}/steam/action/steps/ /steps;
cp -r /${buildVolumeFolder}/${this.buildGuid}/steam/action/entrypoint.sh /entrypoint.sh;
cp -r /${buildVolumeFolder}/${this.buildGuid}/steam/action/steps/ /steps;
chmod -R +x /entrypoint.sh;
chmod -R +x /steps;
/entrypoint.sh;
rm -r /${buildVolumeFolder}/${this.buildId}
rm -r /${buildVolumeFolder}/${this.buildGuid}
`,
], `/${buildVolumeFolder}`, `/${buildVolumeFolder}/${this.buildId}/steam/action/`, [
], `/${buildVolumeFolder}`, `/${buildVolumeFolder}/${this.buildGuid}/steam/action/`, [
{
name: 'GITHUB_SHA',
value: process.env.GITHUB_SHA || '',
@ -2540,7 +2540,7 @@ class RemoteBuilder {
},
{
name: 'GITHUB_WORKSPACE',
value: `/${buildVolumeFolder}/${this.buildId}/${repositoryFolder}/`,
value: `/${buildVolumeFolder}/${this.buildGuid}/${repositoryFolder}/`,
},
{
name: 'PROJECT_PATH',
@ -2600,7 +2600,7 @@ class RemoteBuilder {
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.buildId, this.buildParams, this.branchName, this.defaultSecrets);
yield this.RemoteBuilderProviderPlatform.cleanupSharedBuildResources(this.buildGuid, this.buildParams, this.branchName, this.defaultSecrets);
});
}
}

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -19,7 +19,7 @@ class AWSBuildEnvironment implements RemoteBuilderProviderInterface {
}
cleanupSharedBuildResources(
// eslint-disable-next-line no-unused-vars
buildUid: string,
buildGuid: string,
// eslint-disable-next-line no-unused-vars
buildParameters: BuildParameters,
// eslint-disable-next-line no-unused-vars
@ -29,7 +29,7 @@ class AWSBuildEnvironment implements RemoteBuilderProviderInterface {
) {}
setupSharedBuildResources(
// eslint-disable-next-line no-unused-vars
buildUid: string,
buildGuid: string,
// eslint-disable-next-line no-unused-vars
buildParameters: BuildParameters,
// eslint-disable-next-line no-unused-vars
@ -101,7 +101,7 @@ class AWSBuildEnvironment implements RemoteBuilderProviderInterface {
async setupCloudFormations(
CF: SDK.CloudFormation,
buildUid: string,
buildGuid: string,
image: string,
entrypoint: string[],
commands: string[],
@ -109,12 +109,12 @@ class AWSBuildEnvironment implements RemoteBuilderProviderInterface {
workingdir: string,
secrets: RemoteBuilderSecret[],
): Promise<RemoteBuilderTaskDef> {
const logid = customAlphabet(RemoteBuilderConstants.alphabet, 9)();
const logGuid = customAlphabet(RemoteBuilderConstants.alphabet, 9)();
commands[1] += `
echo "${logid}"
echo "${logGuid}"
`;
await this.setupBaseStack(CF);
const taskDefStackName = `${this.baseStackName}-${buildUid}`;
const taskDefStackName = `${this.baseStackName}-${buildGuid}`;
let taskDefCloudFormation = this.readTaskCloudFormationTemplate();
const cleanupTaskDefStackName = `${taskDefStackName}-cleanup`;
const cleanupCloudFormation = fs.readFileSync(`${__dirname}/cloud-formations/cloudformation-stack-ttl.yml`, 'utf8');
@ -179,7 +179,7 @@ class AWSBuildEnvironment implements RemoteBuilderProviderInterface {
},
{
ParameterKey: 'BUILDID',
ParameterValue: buildUid,
ParameterValue: buildGuid,
},
...mappedSecrets,
],
@ -204,7 +204,7 @@ class AWSBuildEnvironment implements RemoteBuilderProviderInterface {
},
{
ParameterKey: 'BUILDID',
ParameterValue: buildUid,
ParameterValue: buildGuid,
},
],
}).promise();
@ -234,7 +234,7 @@ class AWSBuildEnvironment implements RemoteBuilderProviderInterface {
ttlCloudFormation: cleanupCloudFormation,
taskDefResources,
baseResources,
logid,
logid: logGuid,
};
}

View File

@ -10,7 +10,7 @@ class AWSBuildRunner {
ECS: AWS.ECS,
CF: AWS.CloudFormation,
environment: RemoteBuilderEnvironmentVariable[],
buildUid: string,
buildGuid: string,
commands: string[],
) {
const cluster = taskDef.baseResources?.find((x) => x.LogicalResourceId === 'ECSCluster')?.PhysicalResourceId || '';
@ -33,7 +33,7 @@ class AWSBuildRunner {
containerOverrides: [
{
name: taskDef.taskDefStackName,
environment: [...environment, { name: 'BUILDID', value: buildUid }],
environment: [...environment, { name: 'BUILDID', value: buildGuid }],
command: ['-c', ...commands],
},
],

View File

@ -17,7 +17,7 @@ class Kubernetes implements RemoteBuilderProviderInterface {
private kubeConfig: k8s.KubeConfig;
private kubeClient: k8s.CoreV1Api;
private kubeClientBatch: k8s.BatchV1Api;
private buildId: string = '';
private buildGuid: string = '';
private buildParameters: BuildParameters;
private pvcName: string = '';
private secretName: string = '';
@ -41,7 +41,7 @@ class Kubernetes implements RemoteBuilderProviderInterface {
this.buildParameters = buildParameters;
}
public async setupSharedBuildResources(
buildUid: string,
buildGuid: string,
buildParameters: BuildParameters,
// eslint-disable-next-line no-unused-vars
branchName: string,
@ -49,9 +49,9 @@ class Kubernetes implements RemoteBuilderProviderInterface {
defaultSecretsArray: { ParameterKey: string; EnvironmentVariable: string; ParameterValue: string }[],
) {
try {
this.pvcName = `unity-builder-pvc-${buildUid}`;
this.cleanupCronJobName = `unity-builder-cronjob-${buildUid}`;
this.serviceAccountName = `service-account-${buildUid}`;
this.pvcName = `unity-builder-pvc-${buildGuid}`;
this.cleanupCronJobName = `unity-builder-cronjob-${buildGuid}`;
this.serviceAccountName = `service-account-${buildGuid}`;
await KubernetesStorage.createPersistentVolumeClaim(
buildParameters,
this.pvcName,
@ -72,7 +72,7 @@ class Kubernetes implements RemoteBuilderProviderInterface {
}
async runBuildTask(
buildId: string,
buildGuid: string,
image: string,
commands: string[],
mountdir: string,
@ -82,9 +82,9 @@ class Kubernetes implements RemoteBuilderProviderInterface {
): Promise<void> {
try {
// setup
this.buildId = buildId;
this.secretName = `build-credentials-${buildId}`;
this.jobName = `unity-builder-job-${buildId}`;
this.buildGuid = buildGuid;
this.secretName = `build-credentials-${buildGuid}`;
this.jobName = `unity-builder-job-${buildGuid}`;
await KubernetesSecret.createSecret(secrets, this.secretName, this.namespace, this.kubeClient);
const jobSpec = KubernetesJobSpecFactory.getJobSpec(
commands,
@ -92,7 +92,7 @@ class Kubernetes implements RemoteBuilderProviderInterface {
mountdir,
workingdir,
environment,
this.buildId,
this.buildGuid,
this.buildParameters,
this.secretName,
this.pvcName,
@ -161,7 +161,7 @@ class Kubernetes implements RemoteBuilderProviderInterface {
async cleanupSharedBuildResources(
// eslint-disable-next-line no-unused-vars
buildUid: string,
buildGuid: string,
// eslint-disable-next-line no-unused-vars
buildParameters: BuildParameters,
// eslint-disable-next-line no-unused-vars

View File

@ -8,7 +8,7 @@ class KubernetesJobSpecFactory {
mountdir: string,
workingDirectory: string,
environment: RemoteBuilderEnvironmentVariable[],
buildId: string,
buildGuid: string,
buildParameters: BuildParameters,
secretName,
pvcName,
@ -19,7 +19,7 @@ class KubernetesJobSpecFactory {
...[
{
name: 'GITHUB_SHA',
value: buildId,
value: buildGuid,
},
{
name: 'GITHUB_WORKSPACE',
@ -78,7 +78,7 @@ class KubernetesJobSpecFactory {
name: jobName,
labels: {
app: 'unity-builder',
buildId,
buildGuid,
},
};
job.spec = {

View File

@ -5,7 +5,7 @@ import RemoteBuilderSecret from './remote-builder-secret';
export interface RemoteBuilderProviderInterface {
cleanupSharedBuildResources(
// eslint-disable-next-line no-unused-vars
buildUid: string,
buildGuid: string,
// eslint-disable-next-line no-unused-vars
buildParameters: BuildParameters,
// eslint-disable-next-line no-unused-vars
@ -15,7 +15,7 @@ export interface RemoteBuilderProviderInterface {
);
setupSharedBuildResources(
// eslint-disable-next-line no-unused-vars
buildUid: string,
buildGuid: string,
// eslint-disable-next-line no-unused-vars
buildParameters: BuildParameters,
// eslint-disable-next-line no-unused-vars
@ -25,7 +25,7 @@ export interface RemoteBuilderProviderInterface {
);
runBuildTask(
// eslint-disable-next-line no-unused-vars
buildId: string,
buildGuid: string,
// eslint-disable-next-line no-unused-vars
image: string,
// eslint-disable-next-line no-unused-vars

View File

@ -16,7 +16,7 @@ class RemoteBuilder {
static RemoteBuilderProviderPlatform: RemoteBuilderProviderInterface;
private static buildParams: BuildParameters;
private static defaultSecrets: RemoteBuilderSecret[];
private static buildId: string;
private static buildGuid: string;
private static branchName: string;
private static buildPathFull: string;
private static builderPathFull: string;
@ -35,7 +35,7 @@ class RemoteBuilder {
static async build(buildParameters: BuildParameters, baseImage) {
const t = Date.now();
RemoteBuilder.buildId = RemoteBuilderNamespace.generateBuildName(
RemoteBuilder.buildGuid = RemoteBuilderNamespace.generateBuildName(
RemoteBuilder.readRunNumber(),
buildParameters.platform,
);
@ -46,7 +46,7 @@ class RemoteBuilder {
try {
RemoteBuilder.setupBuildPlatform();
await this.RemoteBuilderProviderPlatform.setupSharedBuildResources(
this.buildId,
this.buildGuid,
this.buildParams,
this.branchName,
this.defaultSecrets,
@ -62,7 +62,7 @@ class RemoteBuilder {
core.info(`Post build steps ${JSON.stringify(this.buildParams.postBuildSteps, undefined, 4)}`);
for (const step of this.buildParams.postBuildSteps) {
await this.RemoteBuilderProviderPlatform.runBuildTask(
this.buildId,
this.buildGuid,
step['image'],
step['commands'],
`/${buildVolumeFolder}`,
@ -80,7 +80,7 @@ class RemoteBuilder {
await RemoteBuilder.UploadArtifacts();
if (this.SteamDeploy) await RemoteBuilder.DeployToSteam();
await this.RemoteBuilderProviderPlatform.cleanupSharedBuildResources(
this.buildId,
this.buildGuid,
this.buildParams,
this.branchName,
this.defaultSecrets,
@ -92,7 +92,7 @@ class RemoteBuilder {
}
private static setupFolderVariables() {
this.buildPathFull = `/${buildVolumeFolder}/${this.buildId}`;
this.buildPathFull = `/${buildVolumeFolder}/${this.buildGuid}`;
this.builderPathFull = `${this.buildPathFull}/builder`;
this.steamPathFull = `${this.buildPathFull}/steam`;
this.repoPathFull = `${this.buildPathFull}/${repositoryFolder}`;
@ -115,7 +115,7 @@ class RemoteBuilder {
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}"`;
await this.RemoteBuilderProviderPlatform.runBuildTask(
this.buildId,
this.buildGuid,
'alpine/git',
[
` printenv
@ -170,7 +170,7 @@ class RemoteBuilder {
private static async BuildStep(baseImage: any) {
core.info('Starting part 2/4 (build unity project)');
await this.RemoteBuilderProviderPlatform.runBuildTask(
this.buildId,
this.buildGuid,
baseImage.toString(),
[
`
@ -196,7 +196,7 @@ class RemoteBuilder {
core.info('Starting step 3/4 build compression');
// Cleanup
await this.RemoteBuilderProviderPlatform.runBuildTask(
this.buildId,
this.buildGuid,
'alpine',
[
`
@ -204,12 +204,12 @@ class RemoteBuilder {
apk update -q
apk add zip -q
cd "${this.libraryFolderFull}"
zip -r "lib-${this.buildId}.zip" "${this.libraryFolderFull}"
mv "lib-${this.buildId}.zip" "${this.cacheFolderFull}/lib"
zip -r "lib-${this.buildGuid}.zip" "${this.libraryFolderFull}"
mv "lib-${this.buildGuid}.zip" "${this.cacheFolderFull}/lib"
cd "${this.projectPathFull}"
ls -lh "${this.projectPathFull}"
zip -r "build-${this.buildId}.zip" "${this.projectPathFull}/${RemoteBuilder.buildParams.buildPath}"
mv "build-${this.buildId}.zip" "/${buildVolumeFolder}/${this.buildId}/build-${this.buildId}.zip"
zip -r "build-${this.buildGuid}.zip" "${this.projectPathFull}/${RemoteBuilder.buildParams.buildPath}"
mv "build-${this.buildGuid}.zip" "/${buildVolumeFolder}/${this.buildGuid}/build-${this.buildGuid}.zip"
`,
],
`/${buildVolumeFolder}`,
@ -228,16 +228,16 @@ class RemoteBuilder {
private static async UploadArtifacts() {
core.info('Starting step 4/4 upload build to s3');
await this.RemoteBuilderProviderPlatform.runBuildTask(
this.buildId,
this.buildGuid,
'amazon/aws-cli',
[
`
aws s3 cp ${this.buildId}/build-${this.buildId}.zip "s3://${this.buildParams.awsBaseStackName}-storage/"
aws s3 cp ${this.buildGuid}/build-${this.buildGuid}.zip "s3://${this.buildParams.awsBaseStackName}-storage/"
# no need to upload Library cache for now
# aws s3 cp "/${buildVolumeFolder}/${cacheFolder}/$branch/lib-${this.buildId}.zip" "s3://${
# aws s3 cp "/${buildVolumeFolder}/${cacheFolder}/$branch/lib-${this.buildGuid}.zip" "s3://${
this.buildParams.awsBaseStackName
}-storage/"
${this.SteamDeploy ? '#' : ''} rm -r ${this.buildId}
${this.SteamDeploy ? '#' : ''} rm -r ${this.buildGuid}
`,
],
`/${buildVolumeFolder}`,
@ -250,22 +250,22 @@ class RemoteBuilder {
private static async DeployToSteam() {
core.info('Starting steam deployment');
await this.RemoteBuilderProviderPlatform.runBuildTask(
this.buildId,
this.buildGuid,
'cm2network/steamcmd:root',
[
`
ls
ls /
cp -r /${buildVolumeFolder}/${this.buildId}/steam/action/entrypoint.sh /entrypoint.sh;
cp -r /${buildVolumeFolder}/${this.buildId}/steam/action/steps/ /steps;
cp -r /${buildVolumeFolder}/${this.buildGuid}/steam/action/entrypoint.sh /entrypoint.sh;
cp -r /${buildVolumeFolder}/${this.buildGuid}/steam/action/steps/ /steps;
chmod -R +x /entrypoint.sh;
chmod -R +x /steps;
/entrypoint.sh;
rm -r /${buildVolumeFolder}/${this.buildId}
rm -r /${buildVolumeFolder}/${this.buildGuid}
`,
],
`/${buildVolumeFolder}`,
`/${buildVolumeFolder}/${this.buildId}/steam/action/`,
`/${buildVolumeFolder}/${this.buildGuid}/steam/action/`,
[
{
name: 'GITHUB_SHA',
@ -428,7 +428,7 @@ class RemoteBuilder {
},
{
name: 'GITHUB_WORKSPACE',
value: `/${buildVolumeFolder}/${this.buildId}/${repositoryFolder}/`,
value: `/${buildVolumeFolder}/${this.buildGuid}/${repositoryFolder}/`,
},
{
name: 'PROJECT_PATH',
@ -490,7 +490,7 @@ class RemoteBuilder {
core.error(JSON.stringify(error, undefined, 4));
core.setFailed('Remote Builder failed');
await this.RemoteBuilderProviderPlatform.cleanupSharedBuildResources(
this.buildId,
this.buildGuid,
this.buildParams,
this.branchName,
this.defaultSecrets,