handleInProgressJob processes an in-progress job webhook
(ctx context.Context, jobParams params.Job)
| 355 | |
| 356 | // handleInProgressJob processes an in-progress job webhook |
| 357 | func (r *basePoolManager) handleInProgressJob(ctx context.Context, jobParams params.Job) (triggeredBy int64, err error) { |
| 358 | if jobParams.RunnerName == "" { |
| 359 | slog.DebugContext(ctx, "instance not found in job data", "workflow_job_id", jobParams.ID) |
| 360 | return 0, nil |
| 361 | } |
| 362 | |
| 363 | // Mark runner as active (this also validates the instance exists) |
| 364 | instance, err := r.setInstanceRunnerStatus(jobParams.RunnerName, params.RunnerActive) |
| 365 | if err != nil { |
| 366 | if errors.Is(err, runnerErrors.ErrNotFound) { |
| 367 | slog.DebugContext(ctx, "instance not found", "runner_name", jobParams.RunnerName) |
| 368 | return 0, nil |
| 369 | } |
| 370 | slog.With(slog.Any("error", err)).ErrorContext( |
| 371 | ctx, "failed to update runner status", |
| 372 | "runner_name", util.SanitizeLogEntry(jobParams.RunnerName)) |
| 373 | return 0, fmt.Errorf("error updating runner: %w", err) |
| 374 | } |
| 375 | |
| 376 | // Verify pool belongs to this entity |
| 377 | pool, err := r.store.GetPoolByID(ctx, instance.PoolID) |
| 378 | if err != nil { |
| 379 | if errors.Is(err, runnerErrors.ErrNotFound) { |
| 380 | return 0, nil |
| 381 | } |
| 382 | slog.With(slog.Any("error", err)).ErrorContext( |
| 383 | ctx, "failed to get pool", |
| 384 | "pool_id", instance.PoolID) |
| 385 | return 0, nil |
| 386 | } |
| 387 | |
| 388 | if !r.isEntityPool(pool) { |
| 389 | slog.DebugContext(ctx, "instance belongs to a pool not managed by this entity", "pool_id", instance.PoolID) |
| 390 | return 0, nil |
| 391 | } |
| 392 | |
| 393 | // Extract the job ID that triggered this runner |
| 394 | triggeredBy = jobIDFromLabels(instance.AditionalLabels) |
| 395 | |
| 396 | // Ensure minimum idle runners for the pool |
| 397 | if err := r.ensureIdleRunnersForOnePool(pool); err != nil { |
| 398 | slog.With(slog.Any("error", err)).ErrorContext( |
| 399 | ctx, "error ensuring idle runners for pool", |
| 400 | "pool_id", pool.ID) |
| 401 | } |
| 402 | |
| 403 | return triggeredBy, nil |
| 404 | } |
| 405 | |
| 406 | func (r *basePoolManager) HandleWorkflowJob(job params.WorkflowJob) error { |
| 407 | ctx := garmUtil.WithSlogContext( |
no test coverage detected