- 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.
Advisory AI CI Runner Harness (DEVOPS-AIAI-31-001)
Purpose: deterministic, offline-friendly CI harness for Advisory AI service/worker. Produces warmed-cache restore, build binlog, and TRX outputs for the core test suite so downstream sprints can validate without bespoke pipelines.
Usage
- From repo root run:
ops/devops/advisoryai-ci-runner/run-advisoryai-ci.sh - Outputs land in
ops/devops/artifacts/advisoryai-ci/<UTC timestamp>/:build.binlog(solution build)tests/advisoryai.trx(VSTest results)summary.json(paths + hashes + durations)
Environment
- Defaults:
DOTNET_CLI_TELEMETRY_OPTOUT=1,DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1,NUGET_PACKAGES=$REPO/.nuget/packages. - Sources default to
local-nugetsthen the warmed cache; override viaNUGET_SOURCES(semicolon-separated). - No external services required; tests are isolated/local.
What it does
- Warm NuGet cache from
local-nugets/into$NUGET_PACKAGESfor air-gap parity. dotnet restore+dotnet buildonsrc/AdvisoryAI/StellaOps.AdvisoryAI.slnwith/bl.- Run the AdvisoryAI test project (
__Tests/StellaOps.AdvisoryAI.Tests) with TRX output; optionalTEST_FILTERenv narrows scope. - Emit
summary.jsonwith artefact paths and SHA256s for reproducibility.
Notes
- Timestamped output folders keep ordering deterministic; consumers should sort lexicographically.
- Use
TEST_FILTER="Name~Inference"to target inference/monitoring-specific tests when iterating.