36 lines
2.8 KiB
Markdown
36 lines
2.8 KiB
Markdown
# SBOM Source Trigger Dispatch Service (Webhook + Scheduler + Retry)
|
|
|
|
## Module
|
|
Scanner
|
|
|
|
## Status
|
|
IMPLEMENTED
|
|
|
|
## Description
|
|
Trigger dispatcher routing events to 4 source-type handlers, webhook endpoints supporting 8+ registry types (Harbor, DockerHub, ACR, ECR, GCR, GHCR, Gitea, Quay), scheduler integration for periodic scans, and retry logic with exponential backoff.
|
|
|
|
## Implementation Details
|
|
- **Trigger Dispatcher**:
|
|
- `src/Scanner/__Libraries/StellaOps.Scanner.Sources/Triggers/SourceTriggerDispatcher.cs` - `SourceTriggerDispatcher` routes trigger events to the appropriate source-type handler based on source type
|
|
- `src/Scanner/__Libraries/StellaOps.Scanner.Sources/Triggers/ISourceTriggerDispatcher.cs` - Interface for trigger dispatching
|
|
- `src/Scanner/__Libraries/StellaOps.Scanner.Sources/Triggers/TriggerContext.cs` - `TriggerContext` carrying webhook payload, source metadata, and retry state
|
|
- **Webhook Endpoints**:
|
|
- `src/Scanner/StellaOps.Scanner.WebService/Endpoints/WebhookEndpoints.cs` - `WebhookEndpoints` exposing REST endpoints for registry webhook payloads from Harbor, DockerHub, ACR, ECR, GCR, GHCR, Gitea, Quay
|
|
- **Source-Type Handlers**:
|
|
- `src/Scanner/__Libraries/StellaOps.Scanner.Sources/Handlers/ISourceTypeHandler.cs` - `ISourceTypeHandler` interface for source-type-specific handling
|
|
- `src/Scanner/__Libraries/StellaOps.Scanner.Sources/Handlers/Zastava/ZastavaSourceHandler.cs` - Zastava registry handler
|
|
- `src/Scanner/__Libraries/StellaOps.Scanner.Sources/Handlers/Docker/DockerSourceHandler.cs` - Docker registry handler
|
|
- `src/Scanner/__Libraries/StellaOps.Scanner.Sources/Handlers/Cli/CliSourceHandler.cs` - CLI-triggered handler
|
|
- `src/Scanner/__Libraries/StellaOps.Scanner.Sources/Handlers/Git/GitSourceHandler.cs` - Git repository handler
|
|
- **Scheduler Integration**:
|
|
- `src/Scanner/__Libraries/StellaOps.Scanner.Sources/Scheduling/SourceSchedulerHostedService.cs` - `SourceSchedulerHostedService` background service managing periodic scan schedules with cron-like scheduling
|
|
- **DI Registration**:
|
|
- `src/Scanner/__Libraries/StellaOps.Scanner.Sources/DependencyInjection/ServiceCollectionExtensions.cs` - Registers trigger dispatcher, handlers, and scheduler
|
|
|
|
## E2E Test Plan
|
|
- [ ] Send a webhook payload from a Harbor registry push event and verify the trigger dispatcher routes it to the correct source-type handler
|
|
- [ ] Verify webhook endpoints accept payloads from all supported registry types (DockerHub, ACR, ECR, GCR, GHCR, Gitea, Quay)
|
|
- [ ] Configure a periodic scan schedule and verify the `SourceSchedulerHostedService` triggers scans at the configured intervals
|
|
- [ ] Verify retry logic with exponential backoff when a handler fails to process a trigger event
|
|
- [ ] Verify the `TriggerContext` carries the correct webhook payload metadata and source configuration to the handler
|