37 lines
1.8 KiB
Markdown
37 lines
1.8 KiB
Markdown
# Signals CI/CD & Local Stack (DEVOPS-SIG-26-001)
|
|
|
|
Artifacts:
|
|
- Compose stack: `devops/compose/docker-compose.stella-ops.yml` (Signals API + PostgreSQL + Valkey + artifact volume).
|
|
- Sample config: `devops/services/signals-ops/signals.yaml` (mounted into the container at `/app/signals.yaml` if desired).
|
|
- Dockerfile: `devops/services/signals-ops/Dockerfile` (multi-stage build on .NET 10 RC).
|
|
- Build/export helper: `devops/tools/signals-scripts/build.sh` (saves image tar to `out/signals/signals-image.tar`).
|
|
- Span sink stack: `devops/services/signals-ops/docker-compose.spansink.yml` + `otel-spansink.yaml` to collect OTLP traces (Excititor `/v1/vex/observations/**`) and write NDJSON to `spansink-data` volume.
|
|
- Grafana dashboard stub: `devops/services/signals-ops/dashboards/excititor-vex-traces.json` (import into Tempo-enabled Grafana).
|
|
|
|
Quick start (offline-friendly):
|
|
```bash
|
|
# build image
|
|
devops/tools/signals-scripts/build.sh
|
|
|
|
# run stack
|
|
docker compose -f devops/compose/docker-compose.stella-ops.yml up -d signals
|
|
|
|
# hit health
|
|
curl -s http://localhost:5088/health
|
|
```
|
|
|
|
Configuration (ENV or YAML):
|
|
- `Signals__Storage__Driver` default `postgres`
|
|
- `Signals__Storage__ConnectionString` default `Host=stellaops-postgres;Port=5432;Database=signals;Username=stellaops;Password=stellaops`
|
|
- `Signals__Cache__ConnectionString` default `stellaops-valkey: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:
|
|
- PostgreSQL 18.1 (primary data store)
|
|
- Valkey 9.0.1 (cache, BSD-3 licensed Redis fork)
|
|
- Artifact volume `signals_artifacts` for callgraph blobs.
|