Correct test and implement dependency health check and start
parent
8f516da4da
commit
73149fb464
|
|
@ -154,6 +154,15 @@ inputs:
|
|||
default: '5Gi'
|
||||
required: false
|
||||
description: 'Amount of disc space to assign the Kubernetes Persistent Volume'
|
||||
# To Do - enables resilience
|
||||
# checkDependencyHealthOverride:
|
||||
# default: ''
|
||||
# required: false
|
||||
# description: 'Use to specify a way to check depdency services health to enable resilient self-starting jobs'
|
||||
# startDependenciesOverride:
|
||||
# default: ''
|
||||
# required: false
|
||||
# description: 'Use to specify a way to start depdency services health to enable resilient self-starting jobs'
|
||||
outputs:
|
||||
volume:
|
||||
description: 'The Persistent Volume (PV) where the build artifacts have been stored by Kubernetes'
|
||||
|
|
|
|||
|
|
@ -1918,6 +1918,7 @@ const kubernetes_job_spec_factory_1 = __importDefault(__nccwpck_require__(1739))
|
|||
const kubernetes_service_account_1 = __importDefault(__nccwpck_require__(42915));
|
||||
const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855));
|
||||
const kubernetes_rook_1 = __importDefault(__nccwpck_require__(20859));
|
||||
const depdency_override_service_1 = __importDefault(__nccwpck_require__(69862));
|
||||
class Kubernetes {
|
||||
constructor(buildParameters) {
|
||||
this.buildGuid = '';
|
||||
|
|
@ -1947,6 +1948,9 @@ class Kubernetes {
|
|||
this.cleanupCronJobName = `unity-builder-cronjob-${buildGuid}`;
|
||||
this.serviceAccountName = `service-account-${buildGuid}`;
|
||||
yield kubernetes_rook_1.default.InitRook(buildParameters.kubeStorageClass);
|
||||
if (yield depdency_override_service_1.default.CheckHealth()) {
|
||||
yield depdency_override_service_1.default.TryStartDependencies();
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
|
@ -2834,6 +2838,53 @@ class CloudRunnerNamespace {
|
|||
exports["default"] = CloudRunnerNamespace;
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 69862:
|
||||
/***/ (function(__unused_webpack_module, exports, __nccwpck_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 }));
|
||||
const cloud_runner_system_1 = __nccwpck_require__(66879);
|
||||
const input_1 = __importDefault(__nccwpck_require__(91933));
|
||||
class DependencyOverrideService {
|
||||
static CheckHealth() {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
if (input_1.default.checkDependencyHealthOverride) {
|
||||
try {
|
||||
yield cloud_runner_system_1.CloudRunnerSystem.Run(input_1.default.checkDependencyHealthOverride);
|
||||
}
|
||||
catch (_a) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
static TryStartDependencies() {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
if (input_1.default.startDependenciesOverride) {
|
||||
yield cloud_runner_system_1.CloudRunnerSystem.Run(input_1.default.startDependenciesOverride);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
exports["default"] = DependencyOverrideService;
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 35346:
|
||||
|
|
@ -4183,6 +4234,12 @@ class Input {
|
|||
static get kubeStorageClass() {
|
||||
return Input.getInput('kubeStorageClass') || '';
|
||||
}
|
||||
static get checkDependencyHealthOverride() {
|
||||
return Input.getInput('checkDependencyHealthOverride') || '';
|
||||
}
|
||||
static get startDependenciesOverride() {
|
||||
return Input.getInput('startDependenciesOverride') || '';
|
||||
}
|
||||
static ToEnvVarFormat(input) {
|
||||
return input
|
||||
.replace(/([A-Z])/g, ' $1')
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -60,9 +60,10 @@ describe('Cloud Runner', () => {
|
|||
const buildParameter = await BuildParameters.create();
|
||||
const baseImage = new ImageTag(buildParameter);
|
||||
const results = await CloudRunner.run(buildParameter, baseImage.toString());
|
||||
expect(results).toContain('library not included');
|
||||
const libraryString = 'Rebuilding Library because the asset database could not be found!';
|
||||
expect(results).toContain(libraryString);
|
||||
const results2 = await CloudRunner.run(buildParameter, baseImage.toString());
|
||||
expect(results2).toContain('library included');
|
||||
expect(results2).toEqual(expect.not.stringContaining(libraryString));
|
||||
Input.githubInputEnabled = true;
|
||||
}, 1000000);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import KubernetesServiceAccount from './kubernetes-service-account';
|
|||
import CloudRunnerLogger from '../services/cloud-runner-logger';
|
||||
import { CoreV1Api } from '@kubernetes/client-node';
|
||||
import KubernetesRook from './kubernetes-rook';
|
||||
import DependencyOverrideService from '../services/depdency-override-service';
|
||||
|
||||
class Kubernetes implements CloudRunnerProviderInterface {
|
||||
private kubeConfig: k8s.KubeConfig;
|
||||
|
|
@ -52,6 +53,9 @@ class Kubernetes implements CloudRunnerProviderInterface {
|
|||
this.cleanupCronJobName = `unity-builder-cronjob-${buildGuid}`;
|
||||
this.serviceAccountName = `service-account-${buildGuid}`;
|
||||
await KubernetesRook.InitRook(buildParameters.kubeStorageClass);
|
||||
if (await DependencyOverrideService.CheckHealth()) {
|
||||
await DependencyOverrideService.TryStartDependencies();
|
||||
}
|
||||
await KubernetesStorage.createPersistentVolumeClaim(
|
||||
buildParameters,
|
||||
this.pvcName,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
import { CloudRunnerSystem } from '../../cli/remote-client/remote-client-services/cloud-runner-system';
|
||||
import Input from '../../input';
|
||||
|
||||
class DependencyOverrideService {
|
||||
public static async CheckHealth() {
|
||||
if (Input.checkDependencyHealthOverride) {
|
||||
try {
|
||||
await CloudRunnerSystem.Run(Input.checkDependencyHealthOverride);
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
public static async TryStartDependencies() {
|
||||
if (Input.startDependenciesOverride) {
|
||||
await CloudRunnerSystem.Run(Input.startDependenciesOverride);
|
||||
}
|
||||
}
|
||||
}
|
||||
export default DependencyOverrideService;
|
||||
|
|
@ -279,6 +279,14 @@ class Input {
|
|||
return Input.getInput('kubeStorageClass') || '';
|
||||
}
|
||||
|
||||
static get checkDependencyHealthOverride(): string {
|
||||
return Input.getInput('checkDependencyHealthOverride') || '';
|
||||
}
|
||||
|
||||
static get startDependenciesOverride(): string {
|
||||
return Input.getInput('startDependenciesOverride') || '';
|
||||
}
|
||||
|
||||
public static ToEnvVarFormat(input: string) {
|
||||
return input
|
||||
.replace(/([A-Z])/g, ' $1')
|
||||
|
|
|
|||
Loading…
Reference in New Issue