Signals CI/CD & Local Stack (DEVOPS-SIG-26-001)
Artifacts:
- Compose stack:
ops/devops/signals/docker-compose.signals.yml(Signals API + Mongo + Valkey + artifact volume). - Sample config:
ops/devops/signals/signals.yaml(mounted into the container at/app/signals.yamlif desired). - Dockerfile:
ops/devops/signals/Dockerfile(multi-stage build on .NET 10 RC). - Build/export helper:
scripts/signals/build.sh(saves image tar toout/signals/signals-image.tar). - Span sink stack:
ops/devops/signals/docker-compose.spansink.yml+otel-spansink.yamlto collect OTLP traces (Excititor/v1/vex/observations/**) and write NDJSON tospansink-datavolume. Run viascripts/signals/run-spansink.sh. - Grafana dashboard stub:
ops/devops/signals/dashboards/excititor-vex-traces.json(import into Tempo-enabled Grafana).
Quick start (offline-friendly):
# 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__ConnectionStringdefaultmongodb://signals-mongo:27017/signalsSignals__Cache__ConnectionStringdefaultsignals-valkey:6379Signals__Storage__RootPathdefault/data/artifacts- Authority disabled by default for local; enable with
Signals__Authority__Enabled=trueand issuer settings.
CI workflow:
.gitea/workflows/signals-ci.ymlrestores, builds, tests, builds container, and uploadssignals-image.tarartifact.
Dependencies:
- Mongo 7 (wiredTiger)
- Valkey 8 (cache, BSD-3 licensed Redis fork)
- Artifact volume
signals_artifactsfor callgraph blobs.