refactoring workflows
parent
7f2f4312ea
commit
994d8aac5c
|
|
@ -1069,6 +1069,75 @@ exports.AWSTemplates = AWSTemplates;
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||||
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||||
|
return new (P || (P = Promise))(function (resolve, reject) {
|
||||||
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||||
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||||
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||||
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||||
|
});
|
||||||
|
};
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||||
|
const aws_build_platform_1 = __importDefault(__webpack_require__(81683));
|
||||||
|
const cloud_runner_namespace_1 = __importDefault(__webpack_require__(63287));
|
||||||
|
const cloud_runner_state_1 = __webpack_require__(70912);
|
||||||
|
const kubernetes_build_platform_1 = __importDefault(__webpack_require__(10471));
|
||||||
|
const cloud_runner_logger_1 = __importDefault(__webpack_require__(22855));
|
||||||
|
const cloud_runner_step_state_1 = __webpack_require__(64854);
|
||||||
|
const workflow_composition_root_1 = __webpack_require__(54204);
|
||||||
|
const cloud_runner_error_1 = __webpack_require__(2600);
|
||||||
|
class CloudRunner {
|
||||||
|
static setup(buildParameters) {
|
||||||
|
cloud_runner_logger_1.default.setup();
|
||||||
|
cloud_runner_state_1.CloudRunnerState.buildGuid = cloud_runner_namespace_1.default.generateBuildName(cloud_runner_state_1.CloudRunnerState.readRunNumber(), buildParameters.platform);
|
||||||
|
cloud_runner_state_1.CloudRunnerState.buildParams = buildParameters;
|
||||||
|
cloud_runner_state_1.CloudRunnerState.setupBranchName();
|
||||||
|
cloud_runner_state_1.CloudRunnerState.setupFolderVariables();
|
||||||
|
cloud_runner_state_1.CloudRunnerState.setupDefaultSecrets();
|
||||||
|
CloudRunner.setupBuildPlatform();
|
||||||
|
}
|
||||||
|
static setupBuildPlatform() {
|
||||||
|
switch (cloud_runner_state_1.CloudRunnerState.buildParams.cloudRunnerCluster) {
|
||||||
|
case 'aws':
|
||||||
|
cloud_runner_logger_1.default.log('Building with AWS');
|
||||||
|
cloud_runner_state_1.CloudRunnerState.CloudRunnerProviderPlatform = new aws_build_platform_1.default(cloud_runner_state_1.CloudRunnerState.buildParams);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
case 'k8s':
|
||||||
|
cloud_runner_logger_1.default.log('Building with Kubernetes');
|
||||||
|
cloud_runner_state_1.CloudRunnerState.CloudRunnerProviderPlatform = new kubernetes_build_platform_1.default(cloud_runner_state_1.CloudRunnerState.buildParams);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
static run(buildParameters, baseImage) {
|
||||||
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
CloudRunner.setup(buildParameters);
|
||||||
|
try {
|
||||||
|
yield cloud_runner_state_1.CloudRunnerState.CloudRunnerProviderPlatform.setupSharedBuildResources(cloud_runner_state_1.CloudRunnerState.buildGuid, cloud_runner_state_1.CloudRunnerState.buildParams, cloud_runner_state_1.CloudRunnerState.branchName, cloud_runner_state_1.CloudRunnerState.defaultSecrets);
|
||||||
|
yield new workflow_composition_root_1.WorkflowCompositionRoot().run(new cloud_runner_step_state_1.CloudRunnerStepState(baseImage, cloud_runner_state_1.CloudRunnerState.readBuildEnvironmentVariables(), cloud_runner_state_1.CloudRunnerState.defaultSecrets));
|
||||||
|
yield cloud_runner_state_1.CloudRunnerState.CloudRunnerProviderPlatform.cleanupSharedBuildResources(cloud_runner_state_1.CloudRunnerState.buildGuid, cloud_runner_state_1.CloudRunnerState.buildParams, cloud_runner_state_1.CloudRunnerState.branchName, cloud_runner_state_1.CloudRunnerState.defaultSecrets);
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
yield cloud_runner_error_1.CloudRunnerError.handleException(error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.default = CloudRunner;
|
||||||
|
|
||||||
|
|
||||||
|
/***/ }),
|
||||||
|
|
||||||
|
/***/ 2600:
|
||||||
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||||||
if (k2 === undefined) k2 = k;
|
if (k2 === undefined) k2 = k;
|
||||||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||||||
|
|
@ -1101,88 +1170,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||||
const aws_build_platform_1 = __importDefault(__webpack_require__(81683));
|
exports.CloudRunnerError = void 0;
|
||||||
const core = __importStar(__webpack_require__(42186));
|
|
||||||
const cloud_runner_namespace_1 = __importDefault(__webpack_require__(63287));
|
|
||||||
const cloud_runner_state_1 = __webpack_require__(70912);
|
|
||||||
const kubernetes_build_platform_1 = __importDefault(__webpack_require__(10471));
|
|
||||||
const cloud_runner_logger_1 = __importDefault(__webpack_require__(22855));
|
const cloud_runner_logger_1 = __importDefault(__webpack_require__(22855));
|
||||||
const build_step_1 = __webpack_require__(91491);
|
const cloud_runner_state_1 = __webpack_require__(70912);
|
||||||
const compression_step_1 = __webpack_require__(6400);
|
const core = __importStar(__webpack_require__(42186));
|
||||||
const download_repository_step_1 = __webpack_require__(12929);
|
class CloudRunnerError {
|
||||||
const custom_step_1 = __webpack_require__(14377);
|
|
||||||
const ephemeral_github_runner_step_1 = __webpack_require__(23795);
|
|
||||||
const cloud_runner_step_state_1 = __webpack_require__(64854);
|
|
||||||
class CloudRunner {
|
|
||||||
static setup(buildParameters) {
|
|
||||||
cloud_runner_logger_1.default.setup();
|
|
||||||
cloud_runner_state_1.CloudRunnerState.buildGuid = cloud_runner_namespace_1.default.generateBuildName(cloud_runner_state_1.CloudRunnerState.readRunNumber(), buildParameters.platform);
|
|
||||||
cloud_runner_state_1.CloudRunnerState.buildParams = buildParameters;
|
|
||||||
cloud_runner_state_1.CloudRunnerState.setupBranchName();
|
|
||||||
cloud_runner_state_1.CloudRunnerState.setupFolderVariables();
|
|
||||||
cloud_runner_state_1.CloudRunnerState.setupDefaultSecrets();
|
|
||||||
CloudRunner.setupBuildPlatform();
|
|
||||||
}
|
|
||||||
static setupBuildPlatform() {
|
|
||||||
switch (cloud_runner_state_1.CloudRunnerState.buildParams.cloudRunnerCluster) {
|
|
||||||
case 'aws':
|
|
||||||
cloud_runner_logger_1.default.log('Building with AWS');
|
|
||||||
cloud_runner_state_1.CloudRunnerState.CloudRunnerProviderPlatform = new aws_build_platform_1.default(cloud_runner_state_1.CloudRunnerState.buildParams);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
case 'k8s':
|
|
||||||
cloud_runner_logger_1.default.log('Building with Kubernetes');
|
|
||||||
cloud_runner_state_1.CloudRunnerState.CloudRunnerProviderPlatform = new kubernetes_build_platform_1.default(cloud_runner_state_1.CloudRunnerState.buildParams);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
static run(buildParameters, baseImage) {
|
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
|
||||||
CloudRunner.setup(buildParameters);
|
|
||||||
try {
|
|
||||||
yield cloud_runner_state_1.CloudRunnerState.CloudRunnerProviderPlatform.setupSharedBuildResources(cloud_runner_state_1.CloudRunnerState.buildGuid, cloud_runner_state_1.CloudRunnerState.buildParams, cloud_runner_state_1.CloudRunnerState.branchName, cloud_runner_state_1.CloudRunnerState.defaultSecrets);
|
|
||||||
yield CloudRunner.runJob(baseImage.toString());
|
|
||||||
yield cloud_runner_state_1.CloudRunnerState.CloudRunnerProviderPlatform.cleanupSharedBuildResources(cloud_runner_state_1.CloudRunnerState.buildGuid, cloud_runner_state_1.CloudRunnerState.buildParams, cloud_runner_state_1.CloudRunnerState.branchName, cloud_runner_state_1.CloudRunnerState.defaultSecrets);
|
|
||||||
}
|
|
||||||
catch (error) {
|
|
||||||
yield CloudRunner.handleException(error);
|
|
||||||
throw error;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
static runJob(baseImage) {
|
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
|
||||||
core.info(`Custom build steps: ${cloud_runner_state_1.CloudRunnerState.buildParams.customBuildSteps}`);
|
|
||||||
if (cloud_runner_state_1.CloudRunnerState.buildParams.customBuildSteps === '') {
|
|
||||||
yield CloudRunner.standardBuildAutomation(baseImage);
|
|
||||||
}
|
|
||||||
else if (cloud_runner_state_1.CloudRunnerState.buildParams.customBuildSteps === 'ephemeral') {
|
|
||||||
yield new ephemeral_github_runner_step_1.EphemeralGitHubRunnerStep().run(new cloud_runner_step_state_1.CloudRunnerStepState(baseImage, cloud_runner_state_1.CloudRunnerState.readBuildEnvironmentVariables(), cloud_runner_state_1.CloudRunnerState.defaultSecrets));
|
|
||||||
}
|
|
||||||
else if (cloud_runner_state_1.CloudRunnerState.buildParams.customBuildSteps === 'download') {
|
|
||||||
yield new download_repository_step_1.DownloadRepositoryStep().run(new cloud_runner_step_state_1.CloudRunnerStepState('alpine/git', cloud_runner_state_1.CloudRunnerState.readBuildEnvironmentVariables(), cloud_runner_state_1.CloudRunnerState.defaultSecrets));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
yield custom_step_1.CustomStep.runCustomJob(cloud_runner_state_1.CloudRunnerState.buildParams.customBuildSteps);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
static standardBuildAutomation(baseImage) {
|
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
|
||||||
cloud_runner_logger_1.default.log(`Cloud Runner is running standard build automation`);
|
|
||||||
yield new download_repository_step_1.DownloadRepositoryStep().run(new cloud_runner_step_state_1.CloudRunnerStepState('alpine/git', cloud_runner_state_1.CloudRunnerState.readBuildEnvironmentVariables(), cloud_runner_state_1.CloudRunnerState.defaultSecrets));
|
|
||||||
cloud_runner_logger_1.default.logWithTime('Download repository step time');
|
|
||||||
yield custom_step_1.CustomStep.runCustomJob(cloud_runner_state_1.CloudRunnerState.buildParams.preBuildSteps);
|
|
||||||
cloud_runner_logger_1.default.logWithTime('Pre build step(s) time');
|
|
||||||
new build_step_1.BuildStep().run(new cloud_runner_step_state_1.CloudRunnerStepState(baseImage, cloud_runner_state_1.CloudRunnerState.readBuildEnvironmentVariables(), cloud_runner_state_1.CloudRunnerState.defaultSecrets));
|
|
||||||
cloud_runner_logger_1.default.logWithTime('Build time');
|
|
||||||
yield new compression_step_1.CompressionStep().run(new cloud_runner_step_state_1.CloudRunnerStepState('alpine', cloud_runner_state_1.CloudRunnerState.readBuildEnvironmentVariables(), cloud_runner_state_1.CloudRunnerState.defaultSecrets));
|
|
||||||
cloud_runner_logger_1.default.logWithTime('Compression time');
|
|
||||||
yield custom_step_1.CustomStep.runCustomJob(cloud_runner_state_1.CloudRunnerState.buildParams.postBuildSteps);
|
|
||||||
cloud_runner_logger_1.default.logWithTime('Post build step(s) time');
|
|
||||||
cloud_runner_logger_1.default.log(`Cloud Runner finished running standard build automation`);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
static handleException(error) {
|
static handleException(error) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
cloud_runner_logger_1.default.error(JSON.stringify(error, undefined, 4));
|
cloud_runner_logger_1.default.error(JSON.stringify(error, undefined, 4));
|
||||||
|
|
@ -1191,7 +1183,7 @@ class CloudRunner {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.default = CloudRunner;
|
exports.CloudRunnerError = CloudRunnerError;
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
@ -2172,126 +2164,6 @@ class CloudRunnerStepState {
|
||||||
exports.CloudRunnerStepState = CloudRunnerStepState;
|
exports.CloudRunnerStepState = CloudRunnerStepState;
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 91491:
|
|
||||||
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
||||||
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
||||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
||||||
return new (P || (P = Promise))(function (resolve, reject) {
|
|
||||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
||||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
||||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
||||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
||||||
});
|
|
||||||
};
|
|
||||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
||||||
exports.BuildStep = void 0;
|
|
||||||
const cloud_runner_logger_1 = __importDefault(__webpack_require__(22855));
|
|
||||||
const cloud_runner_state_1 = __webpack_require__(70912);
|
|
||||||
class BuildStep {
|
|
||||||
run(cloudRunnerStepState) {
|
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
|
||||||
yield BuildStep.BuildStep(cloudRunnerStepState.image, cloudRunnerStepState.environment, cloudRunnerStepState.secrets);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
static BuildStep(image, environmentVariables, secrets) {
|
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
|
||||||
cloud_runner_logger_1.default.log('Starting part 2/4 (build unity project)');
|
|
||||||
yield cloud_runner_state_1.CloudRunnerState.CloudRunnerProviderPlatform.runBuildTask(cloud_runner_state_1.CloudRunnerState.buildGuid, image, [
|
|
||||||
`
|
|
||||||
printenv
|
|
||||||
export GITHUB_WORKSPACE="${cloud_runner_state_1.CloudRunnerState.repoPathFull}"
|
|
||||||
cp -r "${cloud_runner_state_1.CloudRunnerState.builderPathFull}/dist/default-build-script/" "/UnityBuilderAction"
|
|
||||||
cp -r "${cloud_runner_state_1.CloudRunnerState.builderPathFull}/dist/entrypoint.sh" "/entrypoint.sh"
|
|
||||||
cp -r "${cloud_runner_state_1.CloudRunnerState.builderPathFull}/dist/steps/" "/steps"
|
|
||||||
chmod -R +x "/entrypoint.sh"
|
|
||||||
chmod -R +x "/steps"
|
|
||||||
/entrypoint.sh
|
|
||||||
${process.env.DEBUG ? '' : '#'}tree -L 4 "${cloud_runner_state_1.CloudRunnerState.buildPathFull}"
|
|
||||||
${process.env.DEBUG ? '' : '#'}ls -lh "/${cloud_runner_state_1.CloudRunnerState.buildVolumeFolder}"
|
|
||||||
`,
|
|
||||||
], `/${cloud_runner_state_1.CloudRunnerState.buildVolumeFolder}`, `/${cloud_runner_state_1.CloudRunnerState.projectPathFull}`, environmentVariables, secrets);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.BuildStep = BuildStep;
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ 6400:
|
|
||||||
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
||||||
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
||||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
||||||
return new (P || (P = Promise))(function (resolve, reject) {
|
|
||||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
||||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
||||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
||||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
||||||
});
|
|
||||||
};
|
|
||||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
||||||
exports.CompressionStep = void 0;
|
|
||||||
const cloud_runner_logger_1 = __importDefault(__webpack_require__(22855));
|
|
||||||
const cloud_runner_state_1 = __webpack_require__(70912);
|
|
||||||
class CompressionStep {
|
|
||||||
run(cloudRunnerStepState) {
|
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
|
||||||
yield CompressionStep.CompressionStep(cloudRunnerStepState.environment, cloudRunnerStepState.secrets);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
static CompressionStep(environmentVariables, secrets) {
|
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
|
||||||
cloud_runner_logger_1.default.log('Starting step 3/4 build compression');
|
|
||||||
// Cleanup
|
|
||||||
yield cloud_runner_state_1.CloudRunnerState.CloudRunnerProviderPlatform.runBuildTask(cloud_runner_state_1.CloudRunnerState.buildGuid, 'alpine', [
|
|
||||||
`
|
|
||||||
printenv
|
|
||||||
apk update -q
|
|
||||||
apk add zip tree -q
|
|
||||||
${process.env.DEBUG ? '' : '#'}tree -L 4 "$repoPathFull"
|
|
||||||
${process.env.DEBUG ? '' : '#'}ls -lh "$repoPathFull"
|
|
||||||
cd "$libraryFolderFull/.."
|
|
||||||
zip -r "lib-$BUILDID.zip" "./Library"
|
|
||||||
mv "lib-$BUILDID.zip" "/$cacheFolderFull/lib"
|
|
||||||
cd "$repoPathFull"
|
|
||||||
ls -lh "$repoPathFull"
|
|
||||||
zip -r "build-$BUILDID.zip" "./${cloud_runner_state_1.CloudRunnerState.buildParams.buildPath}"
|
|
||||||
mv "build-$BUILDID.zip" "/$cacheFolderFull/build-$BUILDID.zip"
|
|
||||||
${process.env.DEBUG ? '' : '#'}tree -L 4 "/$cacheFolderFull"
|
|
||||||
${process.env.DEBUG ? '' : '#'}tree -L 4 "/$cacheFolderFull/.."
|
|
||||||
${process.env.DEBUG ? '' : '#'}tree -L 4 "$repoPathFull"
|
|
||||||
${process.env.DEBUG ? '' : '#'}ls -lh "$repoPathFull"
|
|
||||||
`,
|
|
||||||
], `/${cloud_runner_state_1.CloudRunnerState.buildVolumeFolder}`, `/${cloud_runner_state_1.CloudRunnerState.buildVolumeFolder}`, [
|
|
||||||
...environmentVariables,
|
|
||||||
...[
|
|
||||||
{
|
|
||||||
name: 'cacheFolderFull',
|
|
||||||
value: cloud_runner_state_1.CloudRunnerState.cacheFolderFull,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
], secrets);
|
|
||||||
cloud_runner_logger_1.default.log('compression step complete');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.CompressionStep = CompressionStep;
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
/***/ 12929:
|
/***/ 12929:
|
||||||
|
|
@ -2349,7 +2221,7 @@ exports.DownloadRepositoryStep = DownloadRepositoryStep;
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
/***/ 14377:
|
/***/ 3786:
|
||||||
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
@ -2367,11 +2239,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||||
exports.CustomStep = void 0;
|
exports.CustomWorkflow = void 0;
|
||||||
const cloud_runner_logger_1 = __importDefault(__webpack_require__(22855));
|
const cloud_runner_logger_1 = __importDefault(__webpack_require__(22855));
|
||||||
const cloud_runner_state_1 = __webpack_require__(70912);
|
const cloud_runner_state_1 = __webpack_require__(70912);
|
||||||
const yaml_1 = __importDefault(__webpack_require__(13552));
|
const yaml_1 = __importDefault(__webpack_require__(13552));
|
||||||
class CustomStep {
|
class CustomWorkflow {
|
||||||
static runCustomJob(buildSteps) {
|
static runCustomJob(buildSteps) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
cloud_runner_logger_1.default.log(`Cloud Runner is running in custom job mode`);
|
cloud_runner_logger_1.default.log(`Cloud Runner is running in custom job mode`);
|
||||||
|
|
@ -2390,12 +2262,12 @@ class CustomStep {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.CustomStep = CustomStep;
|
exports.CustomWorkflow = CustomWorkflow;
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
/***/ 23795:
|
/***/ 37092:
|
||||||
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
@ -2413,13 +2285,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||||
exports.EphemeralGitHubRunnerStep = void 0;
|
exports.EphemeralGitHubRunnerWorkflow = void 0;
|
||||||
const cloud_runner_logger_1 = __importDefault(__webpack_require__(22855));
|
const cloud_runner_logger_1 = __importDefault(__webpack_require__(22855));
|
||||||
const cloud_runner_state_1 = __webpack_require__(70912);
|
const cloud_runner_state_1 = __webpack_require__(70912);
|
||||||
class EphemeralGitHubRunnerStep {
|
class EphemeralGitHubRunnerWorkflow {
|
||||||
run(cloudRunnerStepState) {
|
run(cloudRunnerStepState) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
yield EphemeralGitHubRunnerStep.runJobAsEphemeralGitHubRunner(cloudRunnerStepState.image, cloudRunnerStepState.environment, cloudRunnerStepState.secrets);
|
yield EphemeralGitHubRunnerWorkflow.runJobAsEphemeralGitHubRunner(cloudRunnerStepState.image, cloudRunnerStepState.environment, cloudRunnerStepState.secrets);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
static runJobAsEphemeralGitHubRunner(image, environmentVariables, secrets) {
|
static runJobAsEphemeralGitHubRunner(image, environmentVariables, secrets) {
|
||||||
|
|
@ -2430,7 +2302,77 @@ class EphemeralGitHubRunnerStep {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.EphemeralGitHubRunnerStep = EphemeralGitHubRunnerStep;
|
exports.EphemeralGitHubRunnerWorkflow = EphemeralGitHubRunnerWorkflow;
|
||||||
|
|
||||||
|
|
||||||
|
/***/ }),
|
||||||
|
|
||||||
|
/***/ 54204:
|
||||||
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||||||
|
if (k2 === undefined) k2 = k;
|
||||||
|
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||||||
|
}) : (function(o, m, k, k2) {
|
||||||
|
if (k2 === undefined) k2 = k;
|
||||||
|
o[k2] = m[k];
|
||||||
|
}));
|
||||||
|
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||||||
|
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||||||
|
}) : function(o, v) {
|
||||||
|
o["default"] = v;
|
||||||
|
});
|
||||||
|
var __importStar = (this && this.__importStar) || function (mod) {
|
||||||
|
if (mod && mod.__esModule) return mod;
|
||||||
|
var result = {};
|
||||||
|
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||||
|
__setModuleDefault(result, mod);
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||||
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||||
|
return new (P || (P = Promise))(function (resolve, reject) {
|
||||||
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||||
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||||
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||||
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||||
|
});
|
||||||
|
};
|
||||||
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||||
|
exports.WorkflowCompositionRoot = void 0;
|
||||||
|
const cloud_runner_state_1 = __webpack_require__(70912);
|
||||||
|
const cloud_runner_step_state_1 = __webpack_require__(64854);
|
||||||
|
const download_repository_step_1 = __webpack_require__(12929);
|
||||||
|
const custom_workflow_1 = __webpack_require__(3786);
|
||||||
|
const ephemeral_github_runner_workflow_1 = __webpack_require__(37092);
|
||||||
|
const core = __importStar(__webpack_require__(42186));
|
||||||
|
class WorkflowCompositionRoot {
|
||||||
|
run(cloudRunnerStepState) {
|
||||||
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
yield WorkflowCompositionRoot.runJob(cloudRunnerStepState.image);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
static runJob(baseImage) {
|
||||||
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
core.info(`Custom build steps: ${cloud_runner_state_1.CloudRunnerState.buildParams.customBuildSteps}`);
|
||||||
|
if (cloud_runner_state_1.CloudRunnerState.buildParams.customBuildSteps === '') {
|
||||||
|
yield new ephemeral_github_runner_workflow_1.EphemeralGitHubRunnerWorkflow().run(new cloud_runner_step_state_1.CloudRunnerStepState(baseImage, cloud_runner_state_1.CloudRunnerState.readBuildEnvironmentVariables(), cloud_runner_state_1.CloudRunnerState.defaultSecrets));
|
||||||
|
}
|
||||||
|
else if (cloud_runner_state_1.CloudRunnerState.buildParams.customBuildSteps === 'ephemeral') {
|
||||||
|
yield new ephemeral_github_runner_workflow_1.EphemeralGitHubRunnerWorkflow().run(new cloud_runner_step_state_1.CloudRunnerStepState(baseImage, cloud_runner_state_1.CloudRunnerState.readBuildEnvironmentVariables(), cloud_runner_state_1.CloudRunnerState.defaultSecrets));
|
||||||
|
}
|
||||||
|
else if (cloud_runner_state_1.CloudRunnerState.buildParams.customBuildSteps === 'download') {
|
||||||
|
yield new download_repository_step_1.DownloadRepositoryStep().run(new cloud_runner_step_state_1.CloudRunnerStepState('alpine/git', cloud_runner_state_1.CloudRunnerState.readBuildEnvironmentVariables(), cloud_runner_state_1.CloudRunnerState.defaultSecrets));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
yield custom_workflow_1.CustomWorkflow.runCustomJob(cloud_runner_state_1.CloudRunnerState.buildParams.customBuildSteps);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.WorkflowCompositionRoot = WorkflowCompositionRoot;
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1,16 +1,12 @@
|
||||||
import AWSBuildPlatform from './aws/aws-build-platform';
|
import AWSBuildPlatform from './aws/aws-build-platform';
|
||||||
import * as core from '@actions/core';
|
|
||||||
import { BuildParameters } from '..';
|
import { BuildParameters } from '..';
|
||||||
import CloudRunnerNamespace from './services/cloud-runner-namespace';
|
import CloudRunnerNamespace from './services/cloud-runner-namespace';
|
||||||
import { CloudRunnerState } from './state/cloud-runner-state';
|
import { CloudRunnerState } from './state/cloud-runner-state';
|
||||||
import Kubernetes from './k8s/kubernetes-build-platform';
|
import Kubernetes from './k8s/kubernetes-build-platform';
|
||||||
import CloudRunnerLogger from './services/cloud-runner-logger';
|
import CloudRunnerLogger from './services/cloud-runner-logger';
|
||||||
import { BuildStep } from './steps/build-step';
|
|
||||||
import { CompressionStep } from './steps/compression-step';
|
|
||||||
import { DownloadRepositoryStep } from './steps/download-repository-step';
|
|
||||||
import { CustomStep } from './workflows/custom-step';
|
|
||||||
import { EphemeralGitHubRunnerStep } from './workflows/ephemeral-github-runner-step';
|
|
||||||
import { CloudRunnerStepState } from './state/cloud-runner-step-state';
|
import { CloudRunnerStepState } from './state/cloud-runner-step-state';
|
||||||
|
import { WorkflowCompositionRoot } from './workflows/workflow-composition-root';
|
||||||
|
import { CloudRunnerError } from './error/cloud-runner-error';
|
||||||
|
|
||||||
class CloudRunner {
|
class CloudRunner {
|
||||||
private static setup(buildParameters: BuildParameters) {
|
private static setup(buildParameters: BuildParameters) {
|
||||||
|
|
@ -49,7 +45,13 @@ class CloudRunner {
|
||||||
CloudRunnerState.branchName,
|
CloudRunnerState.branchName,
|
||||||
CloudRunnerState.defaultSecrets,
|
CloudRunnerState.defaultSecrets,
|
||||||
);
|
);
|
||||||
await CloudRunner.runJob(baseImage.toString());
|
await new WorkflowCompositionRoot().run(
|
||||||
|
new CloudRunnerStepState(
|
||||||
|
baseImage,
|
||||||
|
CloudRunnerState.readBuildEnvironmentVariables(),
|
||||||
|
CloudRunnerState.defaultSecrets,
|
||||||
|
),
|
||||||
|
);
|
||||||
await CloudRunnerState.CloudRunnerProviderPlatform.cleanupSharedBuildResources(
|
await CloudRunnerState.CloudRunnerProviderPlatform.cleanupSharedBuildResources(
|
||||||
CloudRunnerState.buildGuid,
|
CloudRunnerState.buildGuid,
|
||||||
CloudRunnerState.buildParams,
|
CloudRunnerState.buildParams,
|
||||||
|
|
@ -57,84 +59,9 @@ class CloudRunner {
|
||||||
CloudRunnerState.defaultSecrets,
|
CloudRunnerState.defaultSecrets,
|
||||||
);
|
);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
await CloudRunner.handleException(error);
|
await CloudRunnerError.handleException(error);
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async runJob(baseImage: any) {
|
|
||||||
core.info(`Custom build steps: ${CloudRunnerState.buildParams.customBuildSteps}`);
|
|
||||||
if (CloudRunnerState.buildParams.customBuildSteps === '') {
|
|
||||||
await CloudRunner.standardBuildAutomation(baseImage);
|
|
||||||
} else if (CloudRunnerState.buildParams.customBuildSteps === 'ephemeral') {
|
|
||||||
await new EphemeralGitHubRunnerStep().run(
|
|
||||||
new CloudRunnerStepState(
|
|
||||||
baseImage,
|
|
||||||
CloudRunnerState.readBuildEnvironmentVariables(),
|
|
||||||
CloudRunnerState.defaultSecrets,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
} else if (CloudRunnerState.buildParams.customBuildSteps === 'download') {
|
|
||||||
await new DownloadRepositoryStep().run(
|
|
||||||
new CloudRunnerStepState(
|
|
||||||
'alpine/git',
|
|
||||||
CloudRunnerState.readBuildEnvironmentVariables(),
|
|
||||||
CloudRunnerState.defaultSecrets,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
await CustomStep.runCustomJob(CloudRunnerState.buildParams.customBuildSteps);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static async standardBuildAutomation(baseImage: any) {
|
|
||||||
CloudRunnerLogger.log(`Cloud Runner is running standard build automation`);
|
|
||||||
|
|
||||||
await new DownloadRepositoryStep().run(
|
|
||||||
new CloudRunnerStepState(
|
|
||||||
'alpine/git',
|
|
||||||
CloudRunnerState.readBuildEnvironmentVariables(),
|
|
||||||
CloudRunnerState.defaultSecrets,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
CloudRunnerLogger.logWithTime('Download repository step time');
|
|
||||||
|
|
||||||
await CustomStep.runCustomJob(CloudRunnerState.buildParams.preBuildSteps);
|
|
||||||
CloudRunnerLogger.logWithTime('Pre build step(s) time');
|
|
||||||
|
|
||||||
new BuildStep().run(
|
|
||||||
new CloudRunnerStepState(
|
|
||||||
baseImage,
|
|
||||||
CloudRunnerState.readBuildEnvironmentVariables(),
|
|
||||||
CloudRunnerState.defaultSecrets,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
CloudRunnerLogger.logWithTime('Build time');
|
|
||||||
|
|
||||||
await new CompressionStep().run(
|
|
||||||
new CloudRunnerStepState(
|
|
||||||
'alpine',
|
|
||||||
CloudRunnerState.readBuildEnvironmentVariables(),
|
|
||||||
CloudRunnerState.defaultSecrets,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
CloudRunnerLogger.logWithTime('Compression time');
|
|
||||||
|
|
||||||
await CustomStep.runCustomJob(CloudRunnerState.buildParams.postBuildSteps);
|
|
||||||
CloudRunnerLogger.logWithTime('Post build step(s) time');
|
|
||||||
|
|
||||||
CloudRunnerLogger.log(`Cloud Runner finished running standard build automation`);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static async handleException(error: unknown) {
|
|
||||||
CloudRunnerLogger.error(JSON.stringify(error, undefined, 4));
|
|
||||||
core.setFailed('Remote Builder failed');
|
|
||||||
await CloudRunnerState.CloudRunnerProviderPlatform.cleanupSharedBuildResources(
|
|
||||||
CloudRunnerState.buildGuid,
|
|
||||||
CloudRunnerState.buildParams,
|
|
||||||
CloudRunnerState.branchName,
|
|
||||||
CloudRunnerState.defaultSecrets,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
export default CloudRunner;
|
export default CloudRunner;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
import CloudRunnerLogger from '../services/cloud-runner-logger';
|
||||||
|
import { CloudRunnerState } from '../state/cloud-runner-state';
|
||||||
|
import * as core from '@actions/core';
|
||||||
|
|
||||||
|
export class CloudRunnerError {
|
||||||
|
public static async handleException(error: unknown) {
|
||||||
|
CloudRunnerLogger.error(JSON.stringify(error, undefined, 4));
|
||||||
|
core.setFailed('Remote Builder failed');
|
||||||
|
await CloudRunnerState.CloudRunnerProviderPlatform.cleanupSharedBuildResources(
|
||||||
|
CloudRunnerState.buildGuid,
|
||||||
|
CloudRunnerState.buildParams,
|
||||||
|
CloudRunnerState.branchName,
|
||||||
|
CloudRunnerState.defaultSecrets,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -3,9 +3,9 @@ import CloudRunnerLogger from '../services/cloud-runner-logger';
|
||||||
import CloudRunnerSecret from '../services/cloud-runner-secret';
|
import CloudRunnerSecret from '../services/cloud-runner-secret';
|
||||||
import { CloudRunnerState } from '../state/cloud-runner-state';
|
import { CloudRunnerState } from '../state/cloud-runner-state';
|
||||||
import { CloudRunnerStepState } from '../state/cloud-runner-step-state';
|
import { CloudRunnerStepState } from '../state/cloud-runner-step-state';
|
||||||
import { StandardStepInterface } from './standard-step-interface';
|
import { StepInterface } from './step-interface';
|
||||||
|
|
||||||
export class BuildStep implements StandardStepInterface {
|
export class BuildStep implements StepInterface {
|
||||||
async run(cloudRunnerStepState: CloudRunnerStepState) {
|
async run(cloudRunnerStepState: CloudRunnerStepState) {
|
||||||
await BuildStep.BuildStep(
|
await BuildStep.BuildStep(
|
||||||
cloudRunnerStepState.image,
|
cloudRunnerStepState.image,
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,9 @@ import CloudRunnerLogger from '../services/cloud-runner-logger';
|
||||||
import CloudRunnerSecret from '../services/cloud-runner-secret';
|
import CloudRunnerSecret from '../services/cloud-runner-secret';
|
||||||
import { CloudRunnerState } from '../state/cloud-runner-state';
|
import { CloudRunnerState } from '../state/cloud-runner-state';
|
||||||
import { CloudRunnerStepState } from '../state/cloud-runner-step-state';
|
import { CloudRunnerStepState } from '../state/cloud-runner-step-state';
|
||||||
import { StandardStepInterface } from './standard-step-interface';
|
import { StepInterface } from './step-interface';
|
||||||
|
|
||||||
export class CompressionStep implements StandardStepInterface {
|
export class CompressionStep implements StepInterface {
|
||||||
async run(cloudRunnerStepState: CloudRunnerStepState) {
|
async run(cloudRunnerStepState: CloudRunnerStepState) {
|
||||||
await CompressionStep.CompressionStep(cloudRunnerStepState.environment, cloudRunnerStepState.secrets);
|
await CompressionStep.CompressionStep(cloudRunnerStepState.environment, cloudRunnerStepState.secrets);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,9 @@ import CloudRunnerLogger from '../services/cloud-runner-logger';
|
||||||
import CloudRunnerSecret from '../services/cloud-runner-secret';
|
import CloudRunnerSecret from '../services/cloud-runner-secret';
|
||||||
import { CloudRunnerState } from '../state/cloud-runner-state';
|
import { CloudRunnerState } from '../state/cloud-runner-state';
|
||||||
import { CloudRunnerStepState } from '../state/cloud-runner-step-state';
|
import { CloudRunnerStepState } from '../state/cloud-runner-step-state';
|
||||||
import { StandardStepInterface } from './standard-step-interface';
|
import { StepInterface } from './step-interface';
|
||||||
|
|
||||||
export class DownloadRepositoryStep implements StandardStepInterface {
|
export class DownloadRepositoryStep implements StepInterface {
|
||||||
async run(cloudRunnerStepState: CloudRunnerStepState) {
|
async run(cloudRunnerStepState: CloudRunnerStepState) {
|
||||||
await DownloadRepositoryStep.downloadRepositoryStep(
|
await DownloadRepositoryStep.downloadRepositoryStep(
|
||||||
cloudRunnerStepState.image,
|
cloudRunnerStepState.image,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import { CloudRunnerStepState } from '../state/cloud-runner-step-state';
|
import { CloudRunnerStepState } from '../state/cloud-runner-step-state';
|
||||||
|
|
||||||
export interface StandardStepInterface {
|
export interface StepInterface {
|
||||||
run(
|
run(
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
cloudRunnerStepState: CloudRunnerStepState,
|
cloudRunnerStepState: CloudRunnerStepState,
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
import CloudRunnerLogger from '../services/cloud-runner-logger';
|
||||||
|
import { CloudRunnerState } from '../state/cloud-runner-state';
|
||||||
|
import { CloudRunnerStepState } from '../state/cloud-runner-step-state';
|
||||||
|
import { BuildStep } from '../steps/build-step';
|
||||||
|
import { CompressionStep } from '../steps/compression-step';
|
||||||
|
import { DownloadRepositoryStep } from '../steps/download-repository-step';
|
||||||
|
import { CustomWorkflow } from './custom-workflow';
|
||||||
|
import { WorkflowInterface } from './workflow-interface';
|
||||||
|
|
||||||
|
export class BuildAutomationWorkflow implements WorkflowInterface {
|
||||||
|
async run(cloudRunnerStepState: CloudRunnerStepState) {
|
||||||
|
await BuildAutomationWorkflow.standardBuildAutomation(cloudRunnerStepState.image);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static async standardBuildAutomation(baseImage: any) {
|
||||||
|
CloudRunnerLogger.log(`Cloud Runner is running standard build automation`);
|
||||||
|
|
||||||
|
await new DownloadRepositoryStep().run(
|
||||||
|
new CloudRunnerStepState(
|
||||||
|
'alpine/git',
|
||||||
|
CloudRunnerState.readBuildEnvironmentVariables(),
|
||||||
|
CloudRunnerState.defaultSecrets,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
CloudRunnerLogger.logWithTime('Download repository step time');
|
||||||
|
|
||||||
|
await CustomWorkflow.runCustomJob(CloudRunnerState.buildParams.preBuildSteps);
|
||||||
|
CloudRunnerLogger.logWithTime('Pre build step(s) time');
|
||||||
|
|
||||||
|
new BuildStep().run(
|
||||||
|
new CloudRunnerStepState(
|
||||||
|
baseImage,
|
||||||
|
CloudRunnerState.readBuildEnvironmentVariables(),
|
||||||
|
CloudRunnerState.defaultSecrets,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
CloudRunnerLogger.logWithTime('Build time');
|
||||||
|
|
||||||
|
await new CompressionStep().run(
|
||||||
|
new CloudRunnerStepState(
|
||||||
|
'alpine',
|
||||||
|
CloudRunnerState.readBuildEnvironmentVariables(),
|
||||||
|
CloudRunnerState.defaultSecrets,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
CloudRunnerLogger.logWithTime('Compression time');
|
||||||
|
|
||||||
|
await CustomWorkflow.runCustomJob(CloudRunnerState.buildParams.postBuildSteps);
|
||||||
|
CloudRunnerLogger.logWithTime('Post build step(s) time');
|
||||||
|
|
||||||
|
CloudRunnerLogger.log(`Cloud Runner finished running standard build automation`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -3,7 +3,7 @@ import CloudRunnerSecret from '../services/cloud-runner-secret';
|
||||||
import { CloudRunnerState } from '../state/cloud-runner-state';
|
import { CloudRunnerState } from '../state/cloud-runner-state';
|
||||||
import YAML from 'yaml';
|
import YAML from 'yaml';
|
||||||
|
|
||||||
export class CustomStep {
|
export class CustomWorkflow {
|
||||||
public static async runCustomJob(buildSteps) {
|
public static async runCustomJob(buildSteps) {
|
||||||
CloudRunnerLogger.log(`Cloud Runner is running in custom job mode`);
|
CloudRunnerLogger.log(`Cloud Runner is running in custom job mode`);
|
||||||
buildSteps = YAML.parse(buildSteps);
|
buildSteps = YAML.parse(buildSteps);
|
||||||
|
|
@ -3,11 +3,11 @@ import CloudRunnerLogger from '../services/cloud-runner-logger';
|
||||||
import CloudRunnerSecret from '../services/cloud-runner-secret';
|
import CloudRunnerSecret from '../services/cloud-runner-secret';
|
||||||
import { CloudRunnerState } from '../state/cloud-runner-state';
|
import { CloudRunnerState } from '../state/cloud-runner-state';
|
||||||
import { CloudRunnerStepState } from '../state/cloud-runner-step-state';
|
import { CloudRunnerStepState } from '../state/cloud-runner-step-state';
|
||||||
import { StandardStepInterface } from '../steps/standard-step-interface';
|
import { WorkflowInterface } from './workflow-interface';
|
||||||
|
|
||||||
export class EphemeralGitHubRunnerStep implements StandardStepInterface {
|
export class EphemeralGitHubRunnerWorkflow implements WorkflowInterface {
|
||||||
async run(cloudRunnerStepState: CloudRunnerStepState) {
|
async run(cloudRunnerStepState: CloudRunnerStepState) {
|
||||||
await EphemeralGitHubRunnerStep.runJobAsEphemeralGitHubRunner(
|
await EphemeralGitHubRunnerWorkflow.runJobAsEphemeralGitHubRunner(
|
||||||
cloudRunnerStepState.image,
|
cloudRunnerStepState.image,
|
||||||
cloudRunnerStepState.environment,
|
cloudRunnerStepState.environment,
|
||||||
cloudRunnerStepState.secrets,
|
cloudRunnerStepState.secrets,
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
import { CloudRunnerState } from '../state/cloud-runner-state';
|
||||||
|
import { CloudRunnerStepState } from '../state/cloud-runner-step-state';
|
||||||
|
import { DownloadRepositoryStep } from '../steps/download-repository-step';
|
||||||
|
import { CustomWorkflow } from './custom-workflow';
|
||||||
|
import { EphemeralGitHubRunnerWorkflow } from './ephemeral-github-runner-workflow';
|
||||||
|
import { WorkflowInterface } from './workflow-interface';
|
||||||
|
import * as core from '@actions/core';
|
||||||
|
|
||||||
|
export class WorkflowCompositionRoot implements WorkflowInterface {
|
||||||
|
async run(cloudRunnerStepState: CloudRunnerStepState) {
|
||||||
|
await WorkflowCompositionRoot.runJob(cloudRunnerStepState.image);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static async runJob(baseImage: any) {
|
||||||
|
core.info(`Custom build steps: ${CloudRunnerState.buildParams.customBuildSteps}`);
|
||||||
|
if (CloudRunnerState.buildParams.customBuildSteps === '') {
|
||||||
|
await new EphemeralGitHubRunnerWorkflow().run(
|
||||||
|
new CloudRunnerStepState(
|
||||||
|
baseImage,
|
||||||
|
CloudRunnerState.readBuildEnvironmentVariables(),
|
||||||
|
CloudRunnerState.defaultSecrets,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
} else if (CloudRunnerState.buildParams.customBuildSteps === 'ephemeral') {
|
||||||
|
await new EphemeralGitHubRunnerWorkflow().run(
|
||||||
|
new CloudRunnerStepState(
|
||||||
|
baseImage,
|
||||||
|
CloudRunnerState.readBuildEnvironmentVariables(),
|
||||||
|
CloudRunnerState.defaultSecrets,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
} else if (CloudRunnerState.buildParams.customBuildSteps === 'download') {
|
||||||
|
await new DownloadRepositoryStep().run(
|
||||||
|
new CloudRunnerStepState(
|
||||||
|
'alpine/git',
|
||||||
|
CloudRunnerState.readBuildEnvironmentVariables(),
|
||||||
|
CloudRunnerState.defaultSecrets,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
await CustomWorkflow.runCustomJob(CloudRunnerState.buildParams.customBuildSteps);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
import { CloudRunnerStepState } from '../state/cloud-runner-step-state';
|
||||||
|
|
||||||
|
export interface WorkflowInterface {
|
||||||
|
run(
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
cloudRunnerStepState: CloudRunnerStepState,
|
||||||
|
);
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue