MCPcopy Create free account
hub / github.com/Qovery/engine / run

Method run

lib-engine/src/blueprint/task.rs:271–518  ·  view source on GitHub ↗
(&self)

Source from the content-addressed store, hash-verified

269 }
270
271 fn run(&self) {
272 if self.request.is_self_managed() {
273 engine_task::enable_log_file_writer(&self.info_context(), &self.log_file_writer);
274 }
275
276 let _span = self.span.enter();
277 info!("blueprint task {} started", self.id());
278
279 self.logger.log(EngineEvent::Info(
280 self.get_event_details(BlueprintStep::Start),
281 EventMessage::new("Qovery Engine starts to execute the blueprint deployment".to_string(), None),
282 ));
283
284 let guard = scopeguard::guard((), |_| {
285 hack::remove_gke_gcloud_auth_plugin_cache();
286 self.logger.log(EngineEvent::Info(
287 self.get_event_details(BlueprintStep::Terminated),
288 EventMessage::new("Qovery Engine has terminated the blueprint deployment".to_string(), None),
289 ));
290 let Some(is_terminated_tx) = self.is_terminated.0.write().unwrap().take() else {
291 return;
292 };
293 let _ = is_terminated_tx.send(());
294 });
295
296 // 1. Create infrastructure context
297 let infra_context = match self.infrastructure_context() {
298 Ok(infra_ctx) => infra_ctx,
299 Err(err) => {
300 self.logger.log(EngineEvent::Error(*err, None));
301 return;
302 }
303 };
304
305 let metrics_registry = Arc::new(infra_context.metrics_registry().clone_dyn());
306 let record =
307 metrics_registry.start_record(self.request.target_environment.long_id, StepLabel::Service, StepName::Total);
308
309 let mut target_env = self.request.target_environment.clone();
310
311 let deployment_ret = (|| -> Result<BlueprintTaskOutcome, Box<EngineError>> {
312 // 2. Clone blueprint repo
313 let (blueprint_dir, blueprint_info) = self.clone_blueprint_repo(&infra_context)?;
314
315 // 3. Parse QBM manifest
316 let manifest = self.parse_manifest(&blueprint_dir)?;
317
318 // 4. Inject context variables
319 inject_context_variables(
320 &mut target_env,
321 &self.request.cloud_provider.kind,
322 &self.request.kubernetes.region,
323 &self.request.kubernetes.name,
324 );
325
326 // 5. Resolve spec
327 let resolved_spec = ResolvedBlueprintSpec::resolve(&manifest, &target_env.spec_overrides).map_err(|e| {
328 Box::new(EngineError::new_blueprint_error(

Callers

nothing calls this directly

Calls 15

enable_log_file_writerFunction · 0.85
inject_context_variablesFunction · 0.85
execute_diffFunction · 0.85
disable_log_file_writerFunction · 0.85
varFunction · 0.85
create_workspace_archiveFunction · 0.85
upload_s3_fileFunction · 0.85
writeMethod · 0.80
sendMethod · 0.80
start_recordMethod · 0.80

Tested by

no test coverage detected