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