- Implemented `run-scanner-ci.sh` to build and run tests for the Scanner solution with a warmed NuGet cache. - Created `excititor-vex-traces.json` dashboard for monitoring Excititor VEX observations. - Added Docker Compose configuration for the OTLP span sink in `docker-compose.spansink.yml`. - Configured OpenTelemetry collector in `otel-spansink.yaml` to receive and process traces. - Developed `run-spansink.sh` script to run the OTLP span sink for Excititor traces. - Introduced `FileSystemRiskBundleObjectStore` for storing risk bundle artifacts in the filesystem. - Built `RiskBundleBuilder` for creating risk bundles with associated metadata and providers. - Established `RiskBundleJob` to execute the risk bundle creation and storage process. - Defined models for risk bundle inputs, entries, and manifests in `RiskBundleModels.cs`. - Implemented signing functionality for risk bundle manifests with `HmacRiskBundleManifestSigner`. - Created unit tests for `RiskBundleBuilder`, `RiskBundleJob`, and signing functionality to ensure correctness. - Added filesystem artifact reader tests to validate manifest parsing and artifact listing. - Included test manifests for egress scenarios in the task runner tests. - Developed timeline query service tests to verify tenant and event ID handling.
39 lines
1.7 KiB
Markdown
39 lines
1.7 KiB
Markdown
# Signals CI/CD & Local Stack (DEVOPS-SIG-26-001)
|
|
|
|
Artifacts:
|
|
- Compose stack: `ops/devops/signals/docker-compose.signals.yml` (Signals API + Mongo + Redis + artifact volume).
|
|
- Sample config: `ops/devops/signals/signals.yaml` (mounted into the container at `/app/signals.yaml` if desired).
|
|
- Dockerfile: `ops/devops/signals/Dockerfile` (multi-stage build on .NET 10 RC).
|
|
- Build/export helper: `scripts/signals/build.sh` (saves image tar to `out/signals/signals-image.tar`).
|
|
- Span sink stack: `ops/devops/signals/docker-compose.spansink.yml` + `otel-spansink.yaml` to collect OTLP traces (Excititor `/v1/vex/observations/**`) and write NDJSON to `spansink-data` volume. Run via `scripts/signals/run-spansink.sh`.
|
|
- Grafana dashboard stub: `ops/devops/signals/dashboards/excititor-vex-traces.json` (import into Tempo-enabled Grafana).
|
|
|
|
Quick start (offline-friendly):
|
|
```bash
|
|
# build image
|
|
scripts/signals/build.sh
|
|
|
|
# run stack
|
|
COMPOSE_FILE=ops/devops/signals/docker-compose.signals.yml docker compose up -d
|
|
|
|
# hit health
|
|
curl -s http://localhost:5088/health
|
|
|
|
# run span sink collector
|
|
scripts/signals/run-spansink.sh
|
|
```
|
|
|
|
Configuration (ENV or YAML):
|
|
- `Signals__Mongo__ConnectionString` default `mongodb://signals-mongo:27017/signals`
|
|
- `Signals__Cache__ConnectionString` default `signals-redis:6379`
|
|
- `Signals__Storage__RootPath` default `/data/artifacts`
|
|
- Authority disabled by default for local; enable with `Signals__Authority__Enabled=true` and issuer settings.
|
|
|
|
CI workflow:
|
|
- `.gitea/workflows/signals-ci.yml` restores, builds, tests, builds container, and uploads `signals-image.tar` artifact.
|
|
|
|
Dependencies:
|
|
- Mongo 7 (wiredTiger)
|
|
- Redis 7 (cache)
|
|
- Artifact volume `signals_artifacts` for callgraph blobs.
|