Refactor id and uid to Guid for consistency
parent
4dcbc8c6fd
commit
21cb4562cc
|
|
@ -900,7 +900,7 @@ class AWSBuildEnvironment {
|
||||||
}
|
}
|
||||||
cleanupSharedBuildResources(
|
cleanupSharedBuildResources(
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
buildUid,
|
buildGuid,
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
buildParameters,
|
buildParameters,
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
|
@ -909,7 +909,7 @@ class AWSBuildEnvironment {
|
||||||
defaultSecretsArray) { }
|
defaultSecretsArray) { }
|
||||||
setupSharedBuildResources(
|
setupSharedBuildResources(
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
buildUid,
|
buildGuid,
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
buildParameters,
|
buildParameters,
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
|
@ -957,14 +957,14 @@ class AWSBuildEnvironment {
|
||||||
template = [template.slice(0, index), insertion, template.slice(index)].join('');
|
template = [template.slice(0, index), insertion, template.slice(index)].join('');
|
||||||
return template;
|
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* () {
|
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] += `
|
commands[1] += `
|
||||||
echo "${logid}"
|
echo "${logGuid}"
|
||||||
`;
|
`;
|
||||||
yield this.setupBaseStack(CF);
|
yield this.setupBaseStack(CF);
|
||||||
const taskDefStackName = `${this.baseStackName}-${buildUid}`;
|
const taskDefStackName = `${this.baseStackName}-${buildGuid}`;
|
||||||
let taskDefCloudFormation = this.readTaskCloudFormationTemplate();
|
let taskDefCloudFormation = this.readTaskCloudFormationTemplate();
|
||||||
const cleanupTaskDefStackName = `${taskDefStackName}-cleanup`;
|
const cleanupTaskDefStackName = `${taskDefStackName}-cleanup`;
|
||||||
const cleanupCloudFormation = fs.readFileSync(`${__dirname}/cloud-formations/cloudformation-stack-ttl.yml`, 'utf8');
|
const cleanupCloudFormation = fs.readFileSync(`${__dirname}/cloud-formations/cloudformation-stack-ttl.yml`, 'utf8');
|
||||||
|
|
@ -1015,7 +1015,7 @@ class AWSBuildEnvironment {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ParameterKey: 'BUILDID',
|
ParameterKey: 'BUILDID',
|
||||||
ParameterValue: buildUid,
|
ParameterValue: buildGuid,
|
||||||
},
|
},
|
||||||
...mappedSecrets,
|
...mappedSecrets,
|
||||||
],
|
],
|
||||||
|
|
@ -1040,7 +1040,7 @@ class AWSBuildEnvironment {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ParameterKey: 'BUILDID',
|
ParameterKey: 'BUILDID',
|
||||||
ParameterValue: buildUid,
|
ParameterValue: buildGuid,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
}).promise();
|
}).promise();
|
||||||
|
|
@ -1063,7 +1063,7 @@ class AWSBuildEnvironment {
|
||||||
ttlCloudFormation: cleanupCloudFormation,
|
ttlCloudFormation: cleanupCloudFormation,
|
||||||
taskDefResources,
|
taskDefResources,
|
||||||
baseResources,
|
baseResources,
|
||||||
logid,
|
logid: logGuid,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -1211,7 +1211,7 @@ const AWS = __importStar(__webpack_require__(71786));
|
||||||
const core = __importStar(__webpack_require__(42186));
|
const core = __importStar(__webpack_require__(42186));
|
||||||
const zlib = __importStar(__webpack_require__(78761));
|
const zlib = __importStar(__webpack_require__(78761));
|
||||||
class AWSBuildRunner {
|
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;
|
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* () {
|
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) || '';
|
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: [
|
containerOverrides: [
|
||||||
{
|
{
|
||||||
name: taskDef.taskDefStackName,
|
name: taskDef.taskDefStackName,
|
||||||
environment: [...environment, { name: 'BUILDID', value: buildUid }],
|
environment: [...environment, { name: 'BUILDID', value: buildGuid }],
|
||||||
command: ['-c', ...commands],
|
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));
|
const kubernetes_service_account_1 = __importDefault(__webpack_require__(671));
|
||||||
class Kubernetes {
|
class Kubernetes {
|
||||||
constructor(buildParameters) {
|
constructor(buildParameters) {
|
||||||
this.buildId = '';
|
this.buildGuid = '';
|
||||||
this.pvcName = '';
|
this.pvcName = '';
|
||||||
this.secretName = '';
|
this.secretName = '';
|
||||||
this.jobName = '';
|
this.jobName = '';
|
||||||
|
|
@ -1421,16 +1421,16 @@ class Kubernetes {
|
||||||
this.namespace = 'default';
|
this.namespace = 'default';
|
||||||
this.buildParameters = buildParameters;
|
this.buildParameters = buildParameters;
|
||||||
}
|
}
|
||||||
setupSharedBuildResources(buildUid, buildParameters,
|
setupSharedBuildResources(buildGuid, buildParameters,
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
branchName,
|
branchName,
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
defaultSecretsArray) {
|
defaultSecretsArray) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
try {
|
try {
|
||||||
this.pvcName = `unity-builder-pvc-${buildUid}`;
|
this.pvcName = `unity-builder-pvc-${buildGuid}`;
|
||||||
this.cleanupCronJobName = `unity-builder-cronjob-${buildUid}`;
|
this.cleanupCronJobName = `unity-builder-cronjob-${buildGuid}`;
|
||||||
this.serviceAccountName = `service-account-${buildUid}`;
|
this.serviceAccountName = `service-account-${buildGuid}`;
|
||||||
yield kubernetes_storage_1.default.createPersistentVolumeClaim(buildParameters, this.pvcName, this.kubeClient, this.namespace);
|
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_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);
|
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* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
try {
|
try {
|
||||||
// setup
|
// setup
|
||||||
this.buildId = buildId;
|
this.buildGuid = buildGuid;
|
||||||
this.secretName = `build-credentials-${buildId}`;
|
this.secretName = `build-credentials-${buildGuid}`;
|
||||||
this.jobName = `unity-builder-job-${buildId}`;
|
this.jobName = `unity-builder-job-${buildGuid}`;
|
||||||
yield kubernetes_secret_1.default.createSecret(secrets, this.secretName, this.namespace, this.kubeClient);
|
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
|
//run
|
||||||
core.info('Creating build job');
|
core.info('Creating build job');
|
||||||
yield this.kubeClientBatch.createNamespacedJob(this.namespace, jobSpec);
|
yield this.kubeClientBatch.createNamespacedJob(this.namespace, jobSpec);
|
||||||
|
|
@ -1501,7 +1501,7 @@ class Kubernetes {
|
||||||
}
|
}
|
||||||
cleanupSharedBuildResources(
|
cleanupSharedBuildResources(
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
buildUid,
|
buildGuid,
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
buildParameters,
|
buildParameters,
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
|
@ -1622,11 +1622,11 @@ exports.default = KubernetesCleanupCronJob;
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||||
class KubernetesJobSpecFactory {
|
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(...[
|
environment.push(...[
|
||||||
{
|
{
|
||||||
name: 'GITHUB_SHA',
|
name: 'GITHUB_SHA',
|
||||||
value: buildId,
|
value: buildGuid,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'GITHUB_WORKSPACE',
|
name: 'GITHUB_WORKSPACE',
|
||||||
|
|
@ -1684,7 +1684,7 @@ class KubernetesJobSpecFactory {
|
||||||
name: jobName,
|
name: jobName,
|
||||||
labels: {
|
labels: {
|
||||||
app: 'unity-builder',
|
app: 'unity-builder',
|
||||||
buildId,
|
buildGuid,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
job.spec = {
|
job.spec = {
|
||||||
|
|
@ -2217,14 +2217,14 @@ class RemoteBuilder {
|
||||||
static build(buildParameters, baseImage) {
|
static build(buildParameters, baseImage) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
const t = Date.now();
|
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.buildParams = buildParameters;
|
||||||
RemoteBuilder.setupBranchName();
|
RemoteBuilder.setupBranchName();
|
||||||
RemoteBuilder.setupFolderVariables();
|
RemoteBuilder.setupFolderVariables();
|
||||||
RemoteBuilder.setupDefaultSecrets();
|
RemoteBuilder.setupDefaultSecrets();
|
||||||
try {
|
try {
|
||||||
RemoteBuilder.setupBuildPlatform();
|
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();
|
yield RemoteBuilder.SetupStep();
|
||||||
const t2 = Date.now();
|
const t2 = Date.now();
|
||||||
core.info(`Setup time: ${Math.floor((t2 - t) / 1000)}`);
|
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);
|
this.buildParams.postBuildSteps = yaml_1.default.parse(this.buildParams.postBuildSteps);
|
||||||
core.info(`Post build steps ${JSON.stringify(this.buildParams.postBuildSteps, undefined, 4)}`);
|
core.info(`Post build steps ${JSON.stringify(this.buildParams.postBuildSteps, undefined, 4)}`);
|
||||||
for (const step of this.buildParams.postBuildSteps) {
|
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',
|
name: 'GITHUB_SHA',
|
||||||
value: process.env.GITHUB_SHA || '',
|
value: process.env.GITHUB_SHA || '',
|
||||||
|
|
@ -2246,7 +2246,7 @@ class RemoteBuilder {
|
||||||
yield RemoteBuilder.UploadArtifacts();
|
yield RemoteBuilder.UploadArtifacts();
|
||||||
if (this.SteamDeploy)
|
if (this.SteamDeploy)
|
||||||
yield RemoteBuilder.DeployToSteam();
|
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) {
|
catch (error) {
|
||||||
yield RemoteBuilder.handleException(error);
|
yield RemoteBuilder.handleException(error);
|
||||||
|
|
@ -2255,7 +2255,7 @@ class RemoteBuilder {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
static setupFolderVariables() {
|
static setupFolderVariables() {
|
||||||
this.buildPathFull = `/${buildVolumeFolder}/${this.buildId}`;
|
this.buildPathFull = `/${buildVolumeFolder}/${this.buildGuid}`;
|
||||||
this.builderPathFull = `${this.buildPathFull}/builder`;
|
this.builderPathFull = `${this.buildPathFull}/builder`;
|
||||||
this.steamPathFull = `${this.buildPathFull}/steam`;
|
this.steamPathFull = `${this.buildPathFull}/steam`;
|
||||||
this.repoPathFull = `${this.buildPathFull}/${repositoryFolder}`;
|
this.repoPathFull = `${this.buildPathFull}/${repositoryFolder}`;
|
||||||
|
|
@ -2274,7 +2274,7 @@ class RemoteBuilder {
|
||||||
const purgeRemoteCache = process.env.PURGE_REMOTE_BUILDER_CACHE !== undefined;
|
const purgeRemoteCache = process.env.PURGE_REMOTE_BUILDER_CACHE !== undefined;
|
||||||
const initializeSourceRepoForCaching = `${this.builderPathFull}/dist/remote-builder/cloneNoLFS.sh "${this.repoPathFull}" "${targetBuildRepoUrl}" "${testLFSFile}"`;
|
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 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
|
` printenv
|
||||||
#
|
#
|
||||||
apk update -q
|
apk update -q
|
||||||
|
|
@ -2322,7 +2322,7 @@ class RemoteBuilder {
|
||||||
static BuildStep(baseImage) {
|
static BuildStep(baseImage) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
core.info('Starting part 2/4 (build unity project)');
|
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
|
printenv
|
||||||
export GITHUB_WORKSPACE="${this.projectPathFull}"
|
export GITHUB_WORKSPACE="${this.projectPathFull}"
|
||||||
|
|
@ -2341,18 +2341,18 @@ class RemoteBuilder {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
core.info('Starting step 3/4 build compression');
|
core.info('Starting step 3/4 build compression');
|
||||||
// Cleanup
|
// Cleanup
|
||||||
yield this.RemoteBuilderProviderPlatform.runBuildTask(this.buildId, 'alpine', [
|
yield this.RemoteBuilderProviderPlatform.runBuildTask(this.buildGuid, 'alpine', [
|
||||||
`
|
`
|
||||||
printenv
|
printenv
|
||||||
apk update -q
|
apk update -q
|
||||||
apk add zip -q
|
apk add zip -q
|
||||||
cd "${this.libraryFolderFull}"
|
cd "${this.libraryFolderFull}"
|
||||||
zip -r "lib-${this.buildId}.zip" "${this.libraryFolderFull}"
|
zip -r "lib-${this.buildGuid}.zip" "${this.libraryFolderFull}"
|
||||||
mv "lib-${this.buildId}.zip" "${this.cacheFolderFull}/lib"
|
mv "lib-${this.buildGuid}.zip" "${this.cacheFolderFull}/lib"
|
||||||
cd "${this.projectPathFull}"
|
cd "${this.projectPathFull}"
|
||||||
ls -lh "${this.projectPathFull}"
|
ls -lh "${this.projectPathFull}"
|
||||||
zip -r "build-${this.buildId}.zip" "${this.projectPathFull}/${RemoteBuilder.buildParams.buildPath}"
|
zip -r "build-${this.buildGuid}.zip" "${this.projectPathFull}/${RemoteBuilder.buildParams.buildPath}"
|
||||||
mv "build-${this.buildId}.zip" "/${buildVolumeFolder}/${this.buildId}/build-${this.buildId}.zip"
|
mv "build-${this.buildGuid}.zip" "/${buildVolumeFolder}/${this.buildGuid}/build-${this.buildGuid}.zip"
|
||||||
`,
|
`,
|
||||||
], `/${buildVolumeFolder}`, `/${buildVolumeFolder}`, [
|
], `/${buildVolumeFolder}`, `/${buildVolumeFolder}`, [
|
||||||
{
|
{
|
||||||
|
|
@ -2366,12 +2366,12 @@ class RemoteBuilder {
|
||||||
static UploadArtifacts() {
|
static UploadArtifacts() {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
core.info('Starting step 4/4 upload build to s3');
|
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
|
# no need to upload Library cache for now
|
||||||
# aws s3 cp "/${buildVolumeFolder}/${cacheFolder}/$branch/lib-${this.buildId}.zip" "s3://${this.buildParams.awsBaseStackName}-storage/"
|
# 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}`, `/${buildVolumeFolder}/`, RemoteBuilder.readUploadArtifactEnvironmentVariables(), RemoteBuilder.readUploadArtifactsSecrets());
|
], `/${buildVolumeFolder}`, `/${buildVolumeFolder}/`, RemoteBuilder.readUploadArtifactEnvironmentVariables(), RemoteBuilder.readUploadArtifactsSecrets());
|
||||||
});
|
});
|
||||||
|
|
@ -2379,18 +2379,18 @@ class RemoteBuilder {
|
||||||
static DeployToSteam() {
|
static DeployToSteam() {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
core.info('Starting steam deployment');
|
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
|
||||||
ls /
|
ls /
|
||||||
cp -r /${buildVolumeFolder}/${this.buildId}/steam/action/entrypoint.sh /entrypoint.sh;
|
cp -r /${buildVolumeFolder}/${this.buildGuid}/steam/action/entrypoint.sh /entrypoint.sh;
|
||||||
cp -r /${buildVolumeFolder}/${this.buildId}/steam/action/steps/ /steps;
|
cp -r /${buildVolumeFolder}/${this.buildGuid}/steam/action/steps/ /steps;
|
||||||
chmod -R +x /entrypoint.sh;
|
chmod -R +x /entrypoint.sh;
|
||||||
chmod -R +x /steps;
|
chmod -R +x /steps;
|
||||||
/entrypoint.sh;
|
/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',
|
name: 'GITHUB_SHA',
|
||||||
value: process.env.GITHUB_SHA || '',
|
value: process.env.GITHUB_SHA || '',
|
||||||
|
|
@ -2540,7 +2540,7 @@ class RemoteBuilder {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'GITHUB_WORKSPACE',
|
name: 'GITHUB_WORKSPACE',
|
||||||
value: `/${buildVolumeFolder}/${this.buildId}/${repositoryFolder}/`,
|
value: `/${buildVolumeFolder}/${this.buildGuid}/${repositoryFolder}/`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'PROJECT_PATH',
|
name: 'PROJECT_PATH',
|
||||||
|
|
@ -2600,7 +2600,7 @@ class RemoteBuilder {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
core.error(JSON.stringify(error, undefined, 4));
|
core.error(JSON.stringify(error, undefined, 4));
|
||||||
core.setFailed('Remote Builder failed');
|
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(
|
cleanupSharedBuildResources(
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
buildUid: string,
|
buildGuid: string,
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
buildParameters: BuildParameters,
|
buildParameters: BuildParameters,
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
|
@ -29,7 +29,7 @@ class AWSBuildEnvironment implements RemoteBuilderProviderInterface {
|
||||||
) {}
|
) {}
|
||||||
setupSharedBuildResources(
|
setupSharedBuildResources(
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
buildUid: string,
|
buildGuid: string,
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
buildParameters: BuildParameters,
|
buildParameters: BuildParameters,
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
|
@ -101,7 +101,7 @@ class AWSBuildEnvironment implements RemoteBuilderProviderInterface {
|
||||||
|
|
||||||
async setupCloudFormations(
|
async setupCloudFormations(
|
||||||
CF: SDK.CloudFormation,
|
CF: SDK.CloudFormation,
|
||||||
buildUid: string,
|
buildGuid: string,
|
||||||
image: string,
|
image: string,
|
||||||
entrypoint: string[],
|
entrypoint: string[],
|
||||||
commands: string[],
|
commands: string[],
|
||||||
|
|
@ -109,12 +109,12 @@ class AWSBuildEnvironment implements RemoteBuilderProviderInterface {
|
||||||
workingdir: string,
|
workingdir: string,
|
||||||
secrets: RemoteBuilderSecret[],
|
secrets: RemoteBuilderSecret[],
|
||||||
): Promise<RemoteBuilderTaskDef> {
|
): Promise<RemoteBuilderTaskDef> {
|
||||||
const logid = customAlphabet(RemoteBuilderConstants.alphabet, 9)();
|
const logGuid = customAlphabet(RemoteBuilderConstants.alphabet, 9)();
|
||||||
commands[1] += `
|
commands[1] += `
|
||||||
echo "${logid}"
|
echo "${logGuid}"
|
||||||
`;
|
`;
|
||||||
await this.setupBaseStack(CF);
|
await this.setupBaseStack(CF);
|
||||||
const taskDefStackName = `${this.baseStackName}-${buildUid}`;
|
const taskDefStackName = `${this.baseStackName}-${buildGuid}`;
|
||||||
let taskDefCloudFormation = this.readTaskCloudFormationTemplate();
|
let taskDefCloudFormation = this.readTaskCloudFormationTemplate();
|
||||||
const cleanupTaskDefStackName = `${taskDefStackName}-cleanup`;
|
const cleanupTaskDefStackName = `${taskDefStackName}-cleanup`;
|
||||||
const cleanupCloudFormation = fs.readFileSync(`${__dirname}/cloud-formations/cloudformation-stack-ttl.yml`, 'utf8');
|
const cleanupCloudFormation = fs.readFileSync(`${__dirname}/cloud-formations/cloudformation-stack-ttl.yml`, 'utf8');
|
||||||
|
|
@ -179,7 +179,7 @@ class AWSBuildEnvironment implements RemoteBuilderProviderInterface {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ParameterKey: 'BUILDID',
|
ParameterKey: 'BUILDID',
|
||||||
ParameterValue: buildUid,
|
ParameterValue: buildGuid,
|
||||||
},
|
},
|
||||||
...mappedSecrets,
|
...mappedSecrets,
|
||||||
],
|
],
|
||||||
|
|
@ -204,7 +204,7 @@ class AWSBuildEnvironment implements RemoteBuilderProviderInterface {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ParameterKey: 'BUILDID',
|
ParameterKey: 'BUILDID',
|
||||||
ParameterValue: buildUid,
|
ParameterValue: buildGuid,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
}).promise();
|
}).promise();
|
||||||
|
|
@ -234,7 +234,7 @@ class AWSBuildEnvironment implements RemoteBuilderProviderInterface {
|
||||||
ttlCloudFormation: cleanupCloudFormation,
|
ttlCloudFormation: cleanupCloudFormation,
|
||||||
taskDefResources,
|
taskDefResources,
|
||||||
baseResources,
|
baseResources,
|
||||||
logid,
|
logid: logGuid,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ class AWSBuildRunner {
|
||||||
ECS: AWS.ECS,
|
ECS: AWS.ECS,
|
||||||
CF: AWS.CloudFormation,
|
CF: AWS.CloudFormation,
|
||||||
environment: RemoteBuilderEnvironmentVariable[],
|
environment: RemoteBuilderEnvironmentVariable[],
|
||||||
buildUid: string,
|
buildGuid: string,
|
||||||
commands: string[],
|
commands: string[],
|
||||||
) {
|
) {
|
||||||
const cluster = taskDef.baseResources?.find((x) => x.LogicalResourceId === 'ECSCluster')?.PhysicalResourceId || '';
|
const cluster = taskDef.baseResources?.find((x) => x.LogicalResourceId === 'ECSCluster')?.PhysicalResourceId || '';
|
||||||
|
|
@ -33,7 +33,7 @@ class AWSBuildRunner {
|
||||||
containerOverrides: [
|
containerOverrides: [
|
||||||
{
|
{
|
||||||
name: taskDef.taskDefStackName,
|
name: taskDef.taskDefStackName,
|
||||||
environment: [...environment, { name: 'BUILDID', value: buildUid }],
|
environment: [...environment, { name: 'BUILDID', value: buildGuid }],
|
||||||
command: ['-c', ...commands],
|
command: ['-c', ...commands],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ class Kubernetes implements RemoteBuilderProviderInterface {
|
||||||
private kubeConfig: k8s.KubeConfig;
|
private kubeConfig: k8s.KubeConfig;
|
||||||
private kubeClient: k8s.CoreV1Api;
|
private kubeClient: k8s.CoreV1Api;
|
||||||
private kubeClientBatch: k8s.BatchV1Api;
|
private kubeClientBatch: k8s.BatchV1Api;
|
||||||
private buildId: string = '';
|
private buildGuid: string = '';
|
||||||
private buildParameters: BuildParameters;
|
private buildParameters: BuildParameters;
|
||||||
private pvcName: string = '';
|
private pvcName: string = '';
|
||||||
private secretName: string = '';
|
private secretName: string = '';
|
||||||
|
|
@ -41,7 +41,7 @@ class Kubernetes implements RemoteBuilderProviderInterface {
|
||||||
this.buildParameters = buildParameters;
|
this.buildParameters = buildParameters;
|
||||||
}
|
}
|
||||||
public async setupSharedBuildResources(
|
public async setupSharedBuildResources(
|
||||||
buildUid: string,
|
buildGuid: string,
|
||||||
buildParameters: BuildParameters,
|
buildParameters: BuildParameters,
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
branchName: string,
|
branchName: string,
|
||||||
|
|
@ -49,9 +49,9 @@ class Kubernetes implements RemoteBuilderProviderInterface {
|
||||||
defaultSecretsArray: { ParameterKey: string; EnvironmentVariable: string; ParameterValue: string }[],
|
defaultSecretsArray: { ParameterKey: string; EnvironmentVariable: string; ParameterValue: string }[],
|
||||||
) {
|
) {
|
||||||
try {
|
try {
|
||||||
this.pvcName = `unity-builder-pvc-${buildUid}`;
|
this.pvcName = `unity-builder-pvc-${buildGuid}`;
|
||||||
this.cleanupCronJobName = `unity-builder-cronjob-${buildUid}`;
|
this.cleanupCronJobName = `unity-builder-cronjob-${buildGuid}`;
|
||||||
this.serviceAccountName = `service-account-${buildUid}`;
|
this.serviceAccountName = `service-account-${buildGuid}`;
|
||||||
await KubernetesStorage.createPersistentVolumeClaim(
|
await KubernetesStorage.createPersistentVolumeClaim(
|
||||||
buildParameters,
|
buildParameters,
|
||||||
this.pvcName,
|
this.pvcName,
|
||||||
|
|
@ -72,7 +72,7 @@ class Kubernetes implements RemoteBuilderProviderInterface {
|
||||||
}
|
}
|
||||||
|
|
||||||
async runBuildTask(
|
async runBuildTask(
|
||||||
buildId: string,
|
buildGuid: string,
|
||||||
image: string,
|
image: string,
|
||||||
commands: string[],
|
commands: string[],
|
||||||
mountdir: string,
|
mountdir: string,
|
||||||
|
|
@ -82,9 +82,9 @@ class Kubernetes implements RemoteBuilderProviderInterface {
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
try {
|
try {
|
||||||
// setup
|
// setup
|
||||||
this.buildId = buildId;
|
this.buildGuid = buildGuid;
|
||||||
this.secretName = `build-credentials-${buildId}`;
|
this.secretName = `build-credentials-${buildGuid}`;
|
||||||
this.jobName = `unity-builder-job-${buildId}`;
|
this.jobName = `unity-builder-job-${buildGuid}`;
|
||||||
await KubernetesSecret.createSecret(secrets, this.secretName, this.namespace, this.kubeClient);
|
await KubernetesSecret.createSecret(secrets, this.secretName, this.namespace, this.kubeClient);
|
||||||
const jobSpec = KubernetesJobSpecFactory.getJobSpec(
|
const jobSpec = KubernetesJobSpecFactory.getJobSpec(
|
||||||
commands,
|
commands,
|
||||||
|
|
@ -92,7 +92,7 @@ class Kubernetes implements RemoteBuilderProviderInterface {
|
||||||
mountdir,
|
mountdir,
|
||||||
workingdir,
|
workingdir,
|
||||||
environment,
|
environment,
|
||||||
this.buildId,
|
this.buildGuid,
|
||||||
this.buildParameters,
|
this.buildParameters,
|
||||||
this.secretName,
|
this.secretName,
|
||||||
this.pvcName,
|
this.pvcName,
|
||||||
|
|
@ -161,7 +161,7 @@ class Kubernetes implements RemoteBuilderProviderInterface {
|
||||||
|
|
||||||
async cleanupSharedBuildResources(
|
async cleanupSharedBuildResources(
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
buildUid: string,
|
buildGuid: string,
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
buildParameters: BuildParameters,
|
buildParameters: BuildParameters,
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ class KubernetesJobSpecFactory {
|
||||||
mountdir: string,
|
mountdir: string,
|
||||||
workingDirectory: string,
|
workingDirectory: string,
|
||||||
environment: RemoteBuilderEnvironmentVariable[],
|
environment: RemoteBuilderEnvironmentVariable[],
|
||||||
buildId: string,
|
buildGuid: string,
|
||||||
buildParameters: BuildParameters,
|
buildParameters: BuildParameters,
|
||||||
secretName,
|
secretName,
|
||||||
pvcName,
|
pvcName,
|
||||||
|
|
@ -19,7 +19,7 @@ class KubernetesJobSpecFactory {
|
||||||
...[
|
...[
|
||||||
{
|
{
|
||||||
name: 'GITHUB_SHA',
|
name: 'GITHUB_SHA',
|
||||||
value: buildId,
|
value: buildGuid,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'GITHUB_WORKSPACE',
|
name: 'GITHUB_WORKSPACE',
|
||||||
|
|
@ -78,7 +78,7 @@ class KubernetesJobSpecFactory {
|
||||||
name: jobName,
|
name: jobName,
|
||||||
labels: {
|
labels: {
|
||||||
app: 'unity-builder',
|
app: 'unity-builder',
|
||||||
buildId,
|
buildGuid,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
job.spec = {
|
job.spec = {
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import RemoteBuilderSecret from './remote-builder-secret';
|
||||||
export interface RemoteBuilderProviderInterface {
|
export interface RemoteBuilderProviderInterface {
|
||||||
cleanupSharedBuildResources(
|
cleanupSharedBuildResources(
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
buildUid: string,
|
buildGuid: string,
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
buildParameters: BuildParameters,
|
buildParameters: BuildParameters,
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
|
@ -15,7 +15,7 @@ export interface RemoteBuilderProviderInterface {
|
||||||
);
|
);
|
||||||
setupSharedBuildResources(
|
setupSharedBuildResources(
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
buildUid: string,
|
buildGuid: string,
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
buildParameters: BuildParameters,
|
buildParameters: BuildParameters,
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
|
@ -25,7 +25,7 @@ export interface RemoteBuilderProviderInterface {
|
||||||
);
|
);
|
||||||
runBuildTask(
|
runBuildTask(
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
buildId: string,
|
buildGuid: string,
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
image: string,
|
image: string,
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ class RemoteBuilder {
|
||||||
static RemoteBuilderProviderPlatform: RemoteBuilderProviderInterface;
|
static RemoteBuilderProviderPlatform: RemoteBuilderProviderInterface;
|
||||||
private static buildParams: BuildParameters;
|
private static buildParams: BuildParameters;
|
||||||
private static defaultSecrets: RemoteBuilderSecret[];
|
private static defaultSecrets: RemoteBuilderSecret[];
|
||||||
private static buildId: string;
|
private static buildGuid: string;
|
||||||
private static branchName: string;
|
private static branchName: string;
|
||||||
private static buildPathFull: string;
|
private static buildPathFull: string;
|
||||||
private static builderPathFull: string;
|
private static builderPathFull: string;
|
||||||
|
|
@ -35,7 +35,7 @@ class RemoteBuilder {
|
||||||
|
|
||||||
static async build(buildParameters: BuildParameters, baseImage) {
|
static async build(buildParameters: BuildParameters, baseImage) {
|
||||||
const t = Date.now();
|
const t = Date.now();
|
||||||
RemoteBuilder.buildId = RemoteBuilderNamespace.generateBuildName(
|
RemoteBuilder.buildGuid = RemoteBuilderNamespace.generateBuildName(
|
||||||
RemoteBuilder.readRunNumber(),
|
RemoteBuilder.readRunNumber(),
|
||||||
buildParameters.platform,
|
buildParameters.platform,
|
||||||
);
|
);
|
||||||
|
|
@ -46,7 +46,7 @@ class RemoteBuilder {
|
||||||
try {
|
try {
|
||||||
RemoteBuilder.setupBuildPlatform();
|
RemoteBuilder.setupBuildPlatform();
|
||||||
await this.RemoteBuilderProviderPlatform.setupSharedBuildResources(
|
await this.RemoteBuilderProviderPlatform.setupSharedBuildResources(
|
||||||
this.buildId,
|
this.buildGuid,
|
||||||
this.buildParams,
|
this.buildParams,
|
||||||
this.branchName,
|
this.branchName,
|
||||||
this.defaultSecrets,
|
this.defaultSecrets,
|
||||||
|
|
@ -62,7 +62,7 @@ class RemoteBuilder {
|
||||||
core.info(`Post build steps ${JSON.stringify(this.buildParams.postBuildSteps, undefined, 4)}`);
|
core.info(`Post build steps ${JSON.stringify(this.buildParams.postBuildSteps, undefined, 4)}`);
|
||||||
for (const step of this.buildParams.postBuildSteps) {
|
for (const step of this.buildParams.postBuildSteps) {
|
||||||
await this.RemoteBuilderProviderPlatform.runBuildTask(
|
await this.RemoteBuilderProviderPlatform.runBuildTask(
|
||||||
this.buildId,
|
this.buildGuid,
|
||||||
step['image'],
|
step['image'],
|
||||||
step['commands'],
|
step['commands'],
|
||||||
`/${buildVolumeFolder}`,
|
`/${buildVolumeFolder}`,
|
||||||
|
|
@ -80,7 +80,7 @@ class RemoteBuilder {
|
||||||
await RemoteBuilder.UploadArtifacts();
|
await RemoteBuilder.UploadArtifacts();
|
||||||
if (this.SteamDeploy) await RemoteBuilder.DeployToSteam();
|
if (this.SteamDeploy) await RemoteBuilder.DeployToSteam();
|
||||||
await this.RemoteBuilderProviderPlatform.cleanupSharedBuildResources(
|
await this.RemoteBuilderProviderPlatform.cleanupSharedBuildResources(
|
||||||
this.buildId,
|
this.buildGuid,
|
||||||
this.buildParams,
|
this.buildParams,
|
||||||
this.branchName,
|
this.branchName,
|
||||||
this.defaultSecrets,
|
this.defaultSecrets,
|
||||||
|
|
@ -92,7 +92,7 @@ class RemoteBuilder {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static setupFolderVariables() {
|
private static setupFolderVariables() {
|
||||||
this.buildPathFull = `/${buildVolumeFolder}/${this.buildId}`;
|
this.buildPathFull = `/${buildVolumeFolder}/${this.buildGuid}`;
|
||||||
this.builderPathFull = `${this.buildPathFull}/builder`;
|
this.builderPathFull = `${this.buildPathFull}/builder`;
|
||||||
this.steamPathFull = `${this.buildPathFull}/steam`;
|
this.steamPathFull = `${this.buildPathFull}/steam`;
|
||||||
this.repoPathFull = `${this.buildPathFull}/${repositoryFolder}`;
|
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 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 handleCaching = `${this.builderPathFull}/dist/remote-builder/handleCaching.sh "${this.cacheFolderFull}" "${this.libraryFolderFull}" "${lfsDirectory}" "${purgeRemoteCache}"`;
|
||||||
await this.RemoteBuilderProviderPlatform.runBuildTask(
|
await this.RemoteBuilderProviderPlatform.runBuildTask(
|
||||||
this.buildId,
|
this.buildGuid,
|
||||||
'alpine/git',
|
'alpine/git',
|
||||||
[
|
[
|
||||||
` printenv
|
` printenv
|
||||||
|
|
@ -170,7 +170,7 @@ class RemoteBuilder {
|
||||||
private static async BuildStep(baseImage: any) {
|
private static async BuildStep(baseImage: any) {
|
||||||
core.info('Starting part 2/4 (build unity project)');
|
core.info('Starting part 2/4 (build unity project)');
|
||||||
await this.RemoteBuilderProviderPlatform.runBuildTask(
|
await this.RemoteBuilderProviderPlatform.runBuildTask(
|
||||||
this.buildId,
|
this.buildGuid,
|
||||||
baseImage.toString(),
|
baseImage.toString(),
|
||||||
[
|
[
|
||||||
`
|
`
|
||||||
|
|
@ -196,7 +196,7 @@ class RemoteBuilder {
|
||||||
core.info('Starting step 3/4 build compression');
|
core.info('Starting step 3/4 build compression');
|
||||||
// Cleanup
|
// Cleanup
|
||||||
await this.RemoteBuilderProviderPlatform.runBuildTask(
|
await this.RemoteBuilderProviderPlatform.runBuildTask(
|
||||||
this.buildId,
|
this.buildGuid,
|
||||||
'alpine',
|
'alpine',
|
||||||
[
|
[
|
||||||
`
|
`
|
||||||
|
|
@ -204,12 +204,12 @@ class RemoteBuilder {
|
||||||
apk update -q
|
apk update -q
|
||||||
apk add zip -q
|
apk add zip -q
|
||||||
cd "${this.libraryFolderFull}"
|
cd "${this.libraryFolderFull}"
|
||||||
zip -r "lib-${this.buildId}.zip" "${this.libraryFolderFull}"
|
zip -r "lib-${this.buildGuid}.zip" "${this.libraryFolderFull}"
|
||||||
mv "lib-${this.buildId}.zip" "${this.cacheFolderFull}/lib"
|
mv "lib-${this.buildGuid}.zip" "${this.cacheFolderFull}/lib"
|
||||||
cd "${this.projectPathFull}"
|
cd "${this.projectPathFull}"
|
||||||
ls -lh "${this.projectPathFull}"
|
ls -lh "${this.projectPathFull}"
|
||||||
zip -r "build-${this.buildId}.zip" "${this.projectPathFull}/${RemoteBuilder.buildParams.buildPath}"
|
zip -r "build-${this.buildGuid}.zip" "${this.projectPathFull}/${RemoteBuilder.buildParams.buildPath}"
|
||||||
mv "build-${this.buildId}.zip" "/${buildVolumeFolder}/${this.buildId}/build-${this.buildId}.zip"
|
mv "build-${this.buildGuid}.zip" "/${buildVolumeFolder}/${this.buildGuid}/build-${this.buildGuid}.zip"
|
||||||
`,
|
`,
|
||||||
],
|
],
|
||||||
`/${buildVolumeFolder}`,
|
`/${buildVolumeFolder}`,
|
||||||
|
|
@ -228,16 +228,16 @@ class RemoteBuilder {
|
||||||
private static async UploadArtifacts() {
|
private static async UploadArtifacts() {
|
||||||
core.info('Starting step 4/4 upload build to s3');
|
core.info('Starting step 4/4 upload build to s3');
|
||||||
await this.RemoteBuilderProviderPlatform.runBuildTask(
|
await this.RemoteBuilderProviderPlatform.runBuildTask(
|
||||||
this.buildId,
|
this.buildGuid,
|
||||||
'amazon/aws-cli',
|
'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
|
# 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
|
this.buildParams.awsBaseStackName
|
||||||
}-storage/"
|
}-storage/"
|
||||||
${this.SteamDeploy ? '#' : ''} rm -r ${this.buildId}
|
${this.SteamDeploy ? '#' : ''} rm -r ${this.buildGuid}
|
||||||
`,
|
`,
|
||||||
],
|
],
|
||||||
`/${buildVolumeFolder}`,
|
`/${buildVolumeFolder}`,
|
||||||
|
|
@ -250,22 +250,22 @@ class RemoteBuilder {
|
||||||
private static async DeployToSteam() {
|
private static async DeployToSteam() {
|
||||||
core.info('Starting steam deployment');
|
core.info('Starting steam deployment');
|
||||||
await this.RemoteBuilderProviderPlatform.runBuildTask(
|
await this.RemoteBuilderProviderPlatform.runBuildTask(
|
||||||
this.buildId,
|
this.buildGuid,
|
||||||
'cm2network/steamcmd:root',
|
'cm2network/steamcmd:root',
|
||||||
[
|
[
|
||||||
`
|
`
|
||||||
ls
|
ls
|
||||||
ls /
|
ls /
|
||||||
cp -r /${buildVolumeFolder}/${this.buildId}/steam/action/entrypoint.sh /entrypoint.sh;
|
cp -r /${buildVolumeFolder}/${this.buildGuid}/steam/action/entrypoint.sh /entrypoint.sh;
|
||||||
cp -r /${buildVolumeFolder}/${this.buildId}/steam/action/steps/ /steps;
|
cp -r /${buildVolumeFolder}/${this.buildGuid}/steam/action/steps/ /steps;
|
||||||
chmod -R +x /entrypoint.sh;
|
chmod -R +x /entrypoint.sh;
|
||||||
chmod -R +x /steps;
|
chmod -R +x /steps;
|
||||||
/entrypoint.sh;
|
/entrypoint.sh;
|
||||||
rm -r /${buildVolumeFolder}/${this.buildId}
|
rm -r /${buildVolumeFolder}/${this.buildGuid}
|
||||||
`,
|
`,
|
||||||
],
|
],
|
||||||
`/${buildVolumeFolder}`,
|
`/${buildVolumeFolder}`,
|
||||||
`/${buildVolumeFolder}/${this.buildId}/steam/action/`,
|
`/${buildVolumeFolder}/${this.buildGuid}/steam/action/`,
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
name: 'GITHUB_SHA',
|
name: 'GITHUB_SHA',
|
||||||
|
|
@ -428,7 +428,7 @@ class RemoteBuilder {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'GITHUB_WORKSPACE',
|
name: 'GITHUB_WORKSPACE',
|
||||||
value: `/${buildVolumeFolder}/${this.buildId}/${repositoryFolder}/`,
|
value: `/${buildVolumeFolder}/${this.buildGuid}/${repositoryFolder}/`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'PROJECT_PATH',
|
name: 'PROJECT_PATH',
|
||||||
|
|
@ -490,7 +490,7 @@ class RemoteBuilder {
|
||||||
core.error(JSON.stringify(error, undefined, 4));
|
core.error(JSON.stringify(error, undefined, 4));
|
||||||
core.setFailed('Remote Builder failed');
|
core.setFailed('Remote Builder failed');
|
||||||
await this.RemoteBuilderProviderPlatform.cleanupSharedBuildResources(
|
await this.RemoteBuilderProviderPlatform.cleanupSharedBuildResources(
|
||||||
this.buildId,
|
this.buildGuid,
|
||||||
this.buildParams,
|
this.buildParams,
|
||||||
this.branchName,
|
this.branchName,
|
||||||
this.defaultSecrets,
|
this.defaultSecrets,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue