Refactor id and uid to Guid for consistency
parent
4dcbc8c6fd
commit
21cb4562cc
|
|
@ -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);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -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,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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],
|
||||
},
|
||||
],
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 = {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in New Issue