name: EPSS Ingest Perf # Sprint: SPRINT_3410_0001_0001_epss_ingestion_storage # Tasks: EPSS-3410-013B, EPSS-3410-014 # # Runs the EPSS ingest perf harness against a Dockerized PostgreSQL instance (Testcontainers). # # Runner requirements: # - Linux runner with Docker Engine available to the runner user (Testcontainers). # - Label: `ubuntu-22.04` (adjust `runs-on` if your labels differ). # - >= 4 CPU / >= 8GB RAM recommended for stable baselines. on: workflow_dispatch: inputs: rows: description: 'Row count to generate (default: 310000)' required: false default: '310000' postgres_image: description: 'PostgreSQL image (default: postgres:16-alpine)' required: false default: 'postgres:16-alpine' schedule: # Nightly at 03:00 UTC - cron: '0 3 * * *' pull_request: paths: - 'src/Scanner/__Libraries/StellaOps.Scanner.Storage/**' - 'src/Scanner/StellaOps.Scanner.Worker/**' - 'src/Scanner/__Benchmarks/StellaOps.Scanner.Storage.Epss.Perf/**' - '.gitea/workflows/epss-ingest-perf.yml' push: branches: [ main ] paths: - 'src/Scanner/__Libraries/StellaOps.Scanner.Storage/**' - 'src/Scanner/StellaOps.Scanner.Worker/**' - 'src/Scanner/__Benchmarks/StellaOps.Scanner.Storage.Epss.Perf/**' - '.gitea/workflows/epss-ingest-perf.yml' jobs: perf: runs-on: ubuntu-22.04 env: DOTNET_NOLOGO: 1 DOTNET_CLI_TELEMETRY_OPTOUT: 1 DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: 1 TZ: UTC STELLAOPS_OFFLINE: 'true' STELLAOPS_DETERMINISTIC: 'true' steps: - name: Checkout uses: actions/checkout@v4 - name: Setup .NET 10 uses: actions/setup-dotnet@v4 with: dotnet-version: 10.0.100 include-prerelease: true - name: Cache NuGet packages uses: actions/cache@v4 with: path: ~/.nuget/packages key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }} restore-keys: | ${{ runner.os }}-nuget- - name: Restore run: | dotnet restore src/Scanner/__Benchmarks/StellaOps.Scanner.Storage.Epss.Perf/StellaOps.Scanner.Storage.Epss.Perf.csproj \ --configfile nuget.config - name: Build run: | dotnet build src/Scanner/__Benchmarks/StellaOps.Scanner.Storage.Epss.Perf/StellaOps.Scanner.Storage.Epss.Perf.csproj \ -c Release \ --no-restore - name: Run perf harness run: | mkdir -p bench/results dotnet run \ --project src/Scanner/__Benchmarks/StellaOps.Scanner.Storage.Epss.Perf/StellaOps.Scanner.Storage.Epss.Perf.csproj \ -c Release \ --no-build \ -- \ --rows ${{ inputs.rows || '310000' }} \ --postgres-image '${{ inputs.postgres_image || 'postgres:16-alpine' }}' \ --output bench/results/epss-ingest-perf-${{ github.sha }}.json - name: Upload results uses: actions/upload-artifact@v4 with: name: epss-ingest-perf-${{ github.sha }} path: | bench/results/epss-ingest-perf-${{ github.sha }}.json retention-days: 90