Implemented multi-step shared resources in interface
parent
f10277a368
commit
5a7ed829ac
|
|
@ -858,6 +858,28 @@ class AWSBuildEnvironment {
|
||||||
constructor(buildParameters) {
|
constructor(buildParameters) {
|
||||||
this.stackName = buildParameters.awsStackName;
|
this.stackName = buildParameters.awsStackName;
|
||||||
}
|
}
|
||||||
|
CleanupSharedBuildResources(
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
buildUid,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
buildParameters,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
branchName,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
defaultSecretsArray) {
|
||||||
|
throw new Error('Method not implemented.');
|
||||||
|
}
|
||||||
|
SetupSharedBuildResources(
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
buildUid,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
buildParameters,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
branchName,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
defaultSecretsArray) {
|
||||||
|
throw new Error('Method not implemented.');
|
||||||
|
}
|
||||||
runBuildTask(buildId, image, commands, mountdir, workingdir, environment, secrets) {
|
runBuildTask(buildId, image, commands, mountdir, workingdir, environment, secrets) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
const ECS = new SDK.ECS();
|
const ECS = new SDK.ECS();
|
||||||
|
|
@ -1278,6 +1300,28 @@ class Kubernetes {
|
||||||
this.namespace = 'default';
|
this.namespace = 'default';
|
||||||
this.buildParameters = buildParameters;
|
this.buildParameters = buildParameters;
|
||||||
}
|
}
|
||||||
|
CleanupSharedBuildResources(
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
buildUid,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
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* () {
|
||||||
|
yield this.kubeClient.deleteNamespacedPersistentVolumeClaim(this.pvcName, this.namespace);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
SetupSharedBuildResources(buildUid, 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* () {
|
||||||
|
yield kubernetes_storage_1.default.createPersistentVolumeClaim(buildParameters, this.pvcName, this.kubeClient, this.namespace);
|
||||||
|
});
|
||||||
|
}
|
||||||
runBuildTask(buildId, image, commands, mountdir, workingdir, environment, secrets) {
|
runBuildTask(buildId, image, commands, mountdir, workingdir, environment, secrets) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
try {
|
try {
|
||||||
|
|
@ -1545,7 +1589,6 @@ class Kubernetes {
|
||||||
core.info('cleaning up');
|
core.info('cleaning up');
|
||||||
try {
|
try {
|
||||||
yield this.kubeClientBatch.deleteNamespacedJob(this.jobName, this.namespace);
|
yield this.kubeClientBatch.deleteNamespacedJob(this.jobName, this.namespace);
|
||||||
yield this.kubeClient.deleteNamespacedPersistentVolumeClaim(this.pvcName, this.namespace);
|
|
||||||
yield this.kubeClient.deleteNamespacedSecret(this.secretName, this.namespace);
|
yield this.kubeClient.deleteNamespacedSecret(this.secretName, this.namespace);
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
|
|
@ -1735,6 +1778,25 @@ class RemoteBuilder {
|
||||||
static build(buildParameters, baseImage) {
|
static build(buildParameters, baseImage) {
|
||||||
var _a;
|
var _a;
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
const runNumber = process.env.GITHUB_RUN_NUMBER;
|
||||||
|
if (!runNumber || runNumber === '') {
|
||||||
|
throw new Error('no run number found, exiting');
|
||||||
|
}
|
||||||
|
const buildUid = remote_builder_namespace_1.default.generateBuildName(runNumber, buildParameters.platform);
|
||||||
|
const defaultBranchName = ((_a = process.env.GITHUB_REF) === null || _a === void 0 ? void 0 : _a.split('/').filter((x) => {
|
||||||
|
x = x[0].toUpperCase() + x.slice(1);
|
||||||
|
return x;
|
||||||
|
}).join('')) || '';
|
||||||
|
const branchName = process.env.REMOTE_BUILDER_CACHE !== undefined ? process.env.REMOTE_BUILDER_CACHE : defaultBranchName;
|
||||||
|
this.SteamDeploy = process.env.STEAM_DEPLOY !== undefined || false;
|
||||||
|
const token = buildParameters.githubToken;
|
||||||
|
const defaultSecretsArray = [
|
||||||
|
{
|
||||||
|
ParameterKey: 'GithubToken',
|
||||||
|
EnvironmentVariable: 'GITHUB_TOKEN',
|
||||||
|
ParameterValue: token,
|
||||||
|
},
|
||||||
|
];
|
||||||
try {
|
try {
|
||||||
switch (buildParameters.remoteBuildCluster) {
|
switch (buildParameters.remoteBuildCluster) {
|
||||||
case 'aws':
|
case 'aws':
|
||||||
|
|
@ -1747,25 +1809,7 @@ class RemoteBuilder {
|
||||||
this.RemoteBuilderProviderPlatform = new kubernetes_build_platform_1.default(buildParameters);
|
this.RemoteBuilderProviderPlatform = new kubernetes_build_platform_1.default(buildParameters);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
const runNumber = process.env.GITHUB_RUN_NUMBER;
|
yield this.RemoteBuilderProviderPlatform.SetupSharedBuildResources(buildUid, buildParameters, branchName, defaultSecretsArray);
|
||||||
if (!runNumber || runNumber === '') {
|
|
||||||
throw new Error('no run number found, exiting');
|
|
||||||
}
|
|
||||||
this.SteamDeploy = process.env.STEAM_DEPLOY !== undefined || false;
|
|
||||||
const buildUid = remote_builder_namespace_1.default.generateBuildName(runNumber, buildParameters.platform);
|
|
||||||
const defaultBranchName = ((_a = process.env.GITHUB_REF) === null || _a === void 0 ? void 0 : _a.split('/').filter((x) => {
|
|
||||||
x = x[0].toUpperCase() + x.slice(1);
|
|
||||||
return x;
|
|
||||||
}).join('')) || '';
|
|
||||||
const branchName = process.env.REMOTE_BUILDER_CACHE !== undefined ? process.env.REMOTE_BUILDER_CACHE : defaultBranchName;
|
|
||||||
const token = buildParameters.githubToken;
|
|
||||||
const defaultSecretsArray = [
|
|
||||||
{
|
|
||||||
ParameterKey: 'GithubToken',
|
|
||||||
EnvironmentVariable: 'GITHUB_TOKEN',
|
|
||||||
ParameterValue: token,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
yield RemoteBuilder.SetupStep(buildUid, buildParameters, branchName, defaultSecretsArray);
|
yield RemoteBuilder.SetupStep(buildUid, buildParameters, branchName, defaultSecretsArray);
|
||||||
yield RemoteBuilder.BuildStep(buildUid, buildParameters, baseImage, defaultSecretsArray);
|
yield RemoteBuilder.BuildStep(buildUid, buildParameters, baseImage, defaultSecretsArray);
|
||||||
yield RemoteBuilder.CompressionStep(buildUid, buildParameters, branchName, defaultSecretsArray);
|
yield RemoteBuilder.CompressionStep(buildUid, buildParameters, branchName, defaultSecretsArray);
|
||||||
|
|
@ -1773,10 +1817,12 @@ class RemoteBuilder {
|
||||||
if (this.SteamDeploy) {
|
if (this.SteamDeploy) {
|
||||||
yield RemoteBuilder.DeployToSteam(buildUid, buildParameters, defaultSecretsArray);
|
yield RemoteBuilder.DeployToSteam(buildUid, buildParameters, defaultSecretsArray);
|
||||||
}
|
}
|
||||||
|
yield this.RemoteBuilderProviderPlatform.CleanupSharedBuildResources(buildUid, buildParameters, branchName, defaultSecretsArray);
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
core.setFailed(error);
|
core.setFailed(error);
|
||||||
core.error(error);
|
core.error(error);
|
||||||
|
yield this.RemoteBuilderProviderPlatform.CleanupSharedBuildResources(buildUid, buildParameters, branchName, defaultSecretsArray);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -16,6 +16,30 @@ class AWSBuildEnvironment implements RemoteBuilderProviderInterface {
|
||||||
constructor(buildParameters: BuildParameters) {
|
constructor(buildParameters: BuildParameters) {
|
||||||
this.stackName = buildParameters.awsStackName;
|
this.stackName = buildParameters.awsStackName;
|
||||||
}
|
}
|
||||||
|
CleanupSharedBuildResources(
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
buildUid: string,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
buildParameters: BuildParameters,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
branchName: string,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
defaultSecretsArray: { ParameterKey: string; EnvironmentVariable: string; ParameterValue: string }[],
|
||||||
|
) {
|
||||||
|
throw new Error('Method not implemented.');
|
||||||
|
}
|
||||||
|
SetupSharedBuildResources(
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
buildUid: string,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
buildParameters: BuildParameters,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
branchName: string,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
defaultSecretsArray: { ParameterKey: string; EnvironmentVariable: string; ParameterValue: string }[],
|
||||||
|
) {
|
||||||
|
throw new Error('Method not implemented.');
|
||||||
|
}
|
||||||
|
|
||||||
async runBuildTask(
|
async runBuildTask(
|
||||||
buildId: string,
|
buildId: string,
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,29 @@ class Kubernetes implements RemoteBuilderProviderInterface {
|
||||||
this.namespace = 'default';
|
this.namespace = 'default';
|
||||||
this.buildParameters = buildParameters;
|
this.buildParameters = buildParameters;
|
||||||
}
|
}
|
||||||
|
async CleanupSharedBuildResources(
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
buildUid: string,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
buildParameters: BuildParameters,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
branchName: string,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
defaultSecretsArray: { ParameterKey: string; EnvironmentVariable: string; ParameterValue: string }[],
|
||||||
|
) {
|
||||||
|
await this.kubeClient.deleteNamespacedPersistentVolumeClaim(this.pvcName, this.namespace);
|
||||||
|
}
|
||||||
|
public async SetupSharedBuildResources(
|
||||||
|
buildUid: string,
|
||||||
|
buildParameters: BuildParameters,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
branchName: string,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
defaultSecretsArray: { ParameterKey: string; EnvironmentVariable: string; ParameterValue: string }[],
|
||||||
|
) {
|
||||||
|
await KubernetesStorage.createPersistentVolumeClaim(buildParameters, this.pvcName, this.kubeClient, this.namespace);
|
||||||
|
}
|
||||||
|
|
||||||
async runBuildTask(
|
async runBuildTask(
|
||||||
buildId: string,
|
buildId: string,
|
||||||
image: string,
|
image: string,
|
||||||
|
|
@ -332,7 +355,6 @@ class Kubernetes implements RemoteBuilderProviderInterface {
|
||||||
core.info('cleaning up');
|
core.info('cleaning up');
|
||||||
try {
|
try {
|
||||||
await this.kubeClientBatch.deleteNamespacedJob(this.jobName, this.namespace);
|
await this.kubeClientBatch.deleteNamespacedJob(this.jobName, this.namespace);
|
||||||
await this.kubeClient.deleteNamespacedPersistentVolumeClaim(this.pvcName, this.namespace);
|
|
||||||
await this.kubeClient.deleteNamespacedSecret(this.secretName, this.namespace);
|
await this.kubeClient.deleteNamespacedSecret(this.secretName, this.namespace);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
core.info('Failed to cleanup, error:');
|
core.info('Failed to cleanup, error:');
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,28 @@
|
||||||
|
import BuildParameters from '../build-parameters';
|
||||||
import RemoteBuilderEnvironmentVariable from './remote-builder-environment-variable';
|
import RemoteBuilderEnvironmentVariable from './remote-builder-environment-variable';
|
||||||
import RemoteBuilderSecret from './remote-builder-secret';
|
import RemoteBuilderSecret from './remote-builder-secret';
|
||||||
|
|
||||||
export interface RemoteBuilderProviderInterface {
|
export interface RemoteBuilderProviderInterface {
|
||||||
|
CleanupSharedBuildResources(
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
buildUid: string,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
buildParameters: BuildParameters,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
branchName: string,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
defaultSecretsArray: { ParameterKey: string; EnvironmentVariable: string; ParameterValue: string }[],
|
||||||
|
);
|
||||||
|
SetupSharedBuildResources(
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
buildUid: string,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
buildParameters: BuildParameters,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
branchName: string,
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
defaultSecretsArray: { ParameterKey: string; EnvironmentVariable: string; ParameterValue: string }[],
|
||||||
|
);
|
||||||
runBuildTask(
|
runBuildTask(
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
buildId: string,
|
buildId: string,
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,29 @@ class RemoteBuilder {
|
||||||
static SteamDeploy: boolean = false;
|
static SteamDeploy: boolean = false;
|
||||||
static RemoteBuilderProviderPlatform: RemoteBuilderProviderInterface;
|
static RemoteBuilderProviderPlatform: RemoteBuilderProviderInterface;
|
||||||
static async build(buildParameters: BuildParameters, baseImage) {
|
static async build(buildParameters: BuildParameters, baseImage) {
|
||||||
|
const runNumber = process.env.GITHUB_RUN_NUMBER;
|
||||||
|
if (!runNumber || runNumber === '') {
|
||||||
|
throw new Error('no run number found, exiting');
|
||||||
|
}
|
||||||
|
const buildUid = RemoteBuilderNamespace.generateBuildName(runNumber, buildParameters.platform);
|
||||||
|
const defaultBranchName =
|
||||||
|
process.env.GITHUB_REF?.split('/')
|
||||||
|
.filter((x) => {
|
||||||
|
x = x[0].toUpperCase() + x.slice(1);
|
||||||
|
return x;
|
||||||
|
})
|
||||||
|
.join('') || '';
|
||||||
|
const branchName =
|
||||||
|
process.env.REMOTE_BUILDER_CACHE !== undefined ? process.env.REMOTE_BUILDER_CACHE : defaultBranchName;
|
||||||
|
this.SteamDeploy = process.env.STEAM_DEPLOY !== undefined || false;
|
||||||
|
const token: string = buildParameters.githubToken;
|
||||||
|
const defaultSecretsArray = [
|
||||||
|
{
|
||||||
|
ParameterKey: 'GithubToken',
|
||||||
|
EnvironmentVariable: 'GITHUB_TOKEN',
|
||||||
|
ParameterValue: token,
|
||||||
|
},
|
||||||
|
];
|
||||||
try {
|
try {
|
||||||
switch (buildParameters.remoteBuildCluster) {
|
switch (buildParameters.remoteBuildCluster) {
|
||||||
case 'aws':
|
case 'aws':
|
||||||
|
|
@ -25,29 +48,12 @@ class RemoteBuilder {
|
||||||
this.RemoteBuilderProviderPlatform = new Kubernetes(buildParameters);
|
this.RemoteBuilderProviderPlatform = new Kubernetes(buildParameters);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
const runNumber = process.env.GITHUB_RUN_NUMBER;
|
await this.RemoteBuilderProviderPlatform.SetupSharedBuildResources(
|
||||||
if (!runNumber || runNumber === '') {
|
buildUid,
|
||||||
throw new Error('no run number found, exiting');
|
buildParameters,
|
||||||
}
|
branchName,
|
||||||
this.SteamDeploy = process.env.STEAM_DEPLOY !== undefined || false;
|
defaultSecretsArray,
|
||||||
const buildUid = RemoteBuilderNamespace.generateBuildName(runNumber, buildParameters.platform);
|
);
|
||||||
const defaultBranchName =
|
|
||||||
process.env.GITHUB_REF?.split('/')
|
|
||||||
.filter((x) => {
|
|
||||||
x = x[0].toUpperCase() + x.slice(1);
|
|
||||||
return x;
|
|
||||||
})
|
|
||||||
.join('') || '';
|
|
||||||
const branchName =
|
|
||||||
process.env.REMOTE_BUILDER_CACHE !== undefined ? process.env.REMOTE_BUILDER_CACHE : defaultBranchName;
|
|
||||||
const token: string = buildParameters.githubToken;
|
|
||||||
const defaultSecretsArray = [
|
|
||||||
{
|
|
||||||
ParameterKey: 'GithubToken',
|
|
||||||
EnvironmentVariable: 'GITHUB_TOKEN',
|
|
||||||
ParameterValue: token,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
await RemoteBuilder.SetupStep(buildUid, buildParameters, branchName, defaultSecretsArray);
|
await RemoteBuilder.SetupStep(buildUid, buildParameters, branchName, defaultSecretsArray);
|
||||||
await RemoteBuilder.BuildStep(buildUid, buildParameters, baseImage, defaultSecretsArray);
|
await RemoteBuilder.BuildStep(buildUid, buildParameters, baseImage, defaultSecretsArray);
|
||||||
await RemoteBuilder.CompressionStep(buildUid, buildParameters, branchName, defaultSecretsArray);
|
await RemoteBuilder.CompressionStep(buildUid, buildParameters, branchName, defaultSecretsArray);
|
||||||
|
|
@ -55,9 +61,21 @@ class RemoteBuilder {
|
||||||
if (this.SteamDeploy) {
|
if (this.SteamDeploy) {
|
||||||
await RemoteBuilder.DeployToSteam(buildUid, buildParameters, defaultSecretsArray);
|
await RemoteBuilder.DeployToSteam(buildUid, buildParameters, defaultSecretsArray);
|
||||||
}
|
}
|
||||||
|
await this.RemoteBuilderProviderPlatform.CleanupSharedBuildResources(
|
||||||
|
buildUid,
|
||||||
|
buildParameters,
|
||||||
|
branchName,
|
||||||
|
defaultSecretsArray,
|
||||||
|
);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
core.setFailed(error);
|
core.setFailed(error);
|
||||||
core.error(error);
|
core.error(error);
|
||||||
|
await this.RemoteBuilderProviderPlatform.CleanupSharedBuildResources(
|
||||||
|
buildUid,
|
||||||
|
buildParameters,
|
||||||
|
branchName,
|
||||||
|
defaultSecretsArray,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue