Refactor NuGet package handling across multiple CI runners and documentation. Update paths to use .nuget/packages instead of local-nugets. Enhance README files for clarity on usage and environment setup. Add script to automate the addition of test projects to the solution.
This commit is contained in:
45
devops/scripts/add-test-projects.ps1
Normal file
45
devops/scripts/add-test-projects.ps1
Normal file
@@ -0,0 +1,45 @@
|
||||
# add-test-projects.ps1 - Add all test projects to StellaOps.Tests.sln
|
||||
# Sprint: SPRINT_20251226_007_CICD
|
||||
|
||||
$ErrorActionPreference = 'Continue'
|
||||
|
||||
$slnPath = "src\StellaOps.Tests.sln"
|
||||
$srcPath = "src"
|
||||
|
||||
Write-Host "=== Adding test projects to StellaOps.Tests.sln ==="
|
||||
Write-Host "Solution: $slnPath"
|
||||
|
||||
# Find all test project files
|
||||
$testProjects = Get-ChildItem -Path $srcPath -Recurse -Filter "*Tests.csproj" |
|
||||
Where-Object {
|
||||
$_.Name -notlike "*Testing.csproj" -and
|
||||
$_.Name -notlike "*TestKit.csproj" -and
|
||||
$_.FullName -notlike "*node_modules*" -and
|
||||
$_.FullName -notlike "*bin*" -and
|
||||
$_.FullName -notlike "*obj*"
|
||||
}
|
||||
|
||||
Write-Host "Found $($testProjects.Count) test projects"
|
||||
|
||||
$added = 0
|
||||
$failed = 0
|
||||
|
||||
foreach ($proj in $testProjects) {
|
||||
$relativePath = $proj.FullName.Replace((Get-Location).Path + "\", "")
|
||||
Write-Host "Adding: $relativePath"
|
||||
|
||||
$result = dotnet sln $slnPath add $proj.FullName 2>&1
|
||||
|
||||
if ($LASTEXITCODE -eq 0) {
|
||||
$added++
|
||||
} else {
|
||||
Write-Host " Failed: $result" -ForegroundColor Yellow
|
||||
$failed++
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "=== Summary ==="
|
||||
Write-Host "Added: $added"
|
||||
Write-Host "Failed: $failed"
|
||||
Write-Host "Total: $($testProjects.Count)"
|
||||
@@ -11,12 +11,11 @@ Usage
|
||||
|
||||
Environment
|
||||
- Defaults: `DOTNET_CLI_TELEMETRY_OPTOUT=1`, `DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1`, `NUGET_PACKAGES=$REPO/.nuget/packages`.
|
||||
- Sources default to `local-nugets` then the warmed cache; override via `NUGET_SOURCES` (semicolon-separated).
|
||||
- Sources default to `.nuget/packages`; override via `NUGET_SOURCES` (semicolon-separated).
|
||||
- No external services required; tests are isolated/local.
|
||||
|
||||
What it does
|
||||
1) Warm NuGet cache from `local-nugets/` into `$NUGET_PACKAGES` for air-gap parity.
|
||||
2) `dotnet restore` + `dotnet build` on `src/AdvisoryAI/StellaOps.AdvisoryAI.sln` with `/bl`.
|
||||
1) `dotnet restore` + `dotnet build` on `src/AdvisoryAI/StellaOps.AdvisoryAI.sln` with `/bl`.
|
||||
3) Run the AdvisoryAI test project (`__Tests/StellaOps.AdvisoryAI.Tests`) with TRX output; optional `TEST_FILTER` env narrows scope.
|
||||
4) Emit `summary.json` with artefact paths and SHA256s for reproducibility.
|
||||
|
||||
|
||||
@@ -14,13 +14,11 @@ mkdir -p "$logs_dir"
|
||||
export DOTNET_CLI_TELEMETRY_OPTOUT=${DOTNET_CLI_TELEMETRY_OPTOUT:-1}
|
||||
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=${DOTNET_SKIP_FIRST_TIME_EXPERIENCE:-1}
|
||||
export NUGET_PACKAGES=${NUGET_PACKAGES:-$repo_root/.nuget/packages}
|
||||
export NUGET_SOURCES=${NUGET_SOURCES:-"$repo_root/local-nugets;$repo_root/.nuget/packages"}
|
||||
export NUGET_SOURCES=${NUGET_SOURCES:-"$repo_root/.nuget/packages"}
|
||||
export TEST_FILTER=${TEST_FILTER:-""}
|
||||
export DOTNET_RESTORE_DISABLE_PARALLEL=${DOTNET_RESTORE_DISABLE_PARALLEL:-1}
|
||||
|
||||
# Warm cache from local feed
|
||||
mkdir -p "$NUGET_PACKAGES"
|
||||
rsync -a "$repo_root/local-nugets/" "$NUGET_PACKAGES/" >/dev/null 2>&1 || true
|
||||
|
||||
# Restore sources
|
||||
restore_sources=()
|
||||
|
||||
@@ -14,7 +14,7 @@ ARTIFACT_ROOT="${ARTIFACT_ROOT:-"$ROOT/ops/devops/artifacts/ci-110/$TIMESTAMP"}"
|
||||
LOG_DIR="$ARTIFACT_ROOT/logs"
|
||||
TRX_DIR="$ARTIFACT_ROOT/trx"
|
||||
|
||||
NUGET_SOURCES_DEFAULT="$ROOT/local-nugets;$ROOT/.nuget/packages;https://api.nuget.org/v3/index.json"
|
||||
NUGET_SOURCES_DEFAULT="$ROOT/.nuget/packages;https://api.nuget.org/v3/index.json"
|
||||
NUGET_SOURCES="${NUGET_SOURCES:-$NUGET_SOURCES_DEFAULT}"
|
||||
|
||||
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
||||
|
||||
@@ -12,12 +12,11 @@ Usage
|
||||
|
||||
Environment
|
||||
- Defaults: `DOTNET_CLI_TELEMETRY_OPTOUT=1`, `DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1`, `NUGET_PACKAGES=$REPO/.nuget/packages`.
|
||||
- Uses local feed `local-nugets/` first, then NuGet.org (can be overridden via `NUGET_SOURCES`).
|
||||
- Uses `.nuget/packages` cache (can be overridden via `NUGET_SOURCES`).
|
||||
- No external services required; Mongo2Go provides ephemeral Mongo for tests.
|
||||
|
||||
What it does
|
||||
1) Warm NuGet cache from `local-nugets/` into `$NUGET_PACKAGES` for offline/air-gap parity.
|
||||
2) `dotnet restore` + `dotnet build` on `concelier-webservice.slnf` with `/bl`.
|
||||
1) `dotnet restore` + `dotnet build` on `concelier-webservice.slnf` with `/bl`.
|
||||
3) Run WebService and Storage.Mongo test projects with TRX output and without rebuild (`--no-build`).
|
||||
4) Emit a concise `summary.json` listing artefacts and SHA256s for reproducibility.
|
||||
|
||||
|
||||
@@ -14,13 +14,11 @@ mkdir -p "$logs_dir"
|
||||
export DOTNET_CLI_TELEMETRY_OPTOUT=${DOTNET_CLI_TELEMETRY_OPTOUT:-1}
|
||||
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=${DOTNET_SKIP_FIRST_TIME_EXPERIENCE:-1}
|
||||
export NUGET_PACKAGES=${NUGET_PACKAGES:-$repo_root/.nuget/packages}
|
||||
export NUGET_SOURCES=${NUGET_SOURCES:-"$repo_root/local-nugets;$repo_root/.nuget/packages"}
|
||||
export NUGET_SOURCES=${NUGET_SOURCES:-"$repo_root/.nuget/packages"}
|
||||
export TEST_FILTER=${TEST_FILTER:-""}
|
||||
export DOTNET_RESTORE_DISABLE_PARALLEL=${DOTNET_RESTORE_DISABLE_PARALLEL:-1}
|
||||
|
||||
# Warm NuGet cache from local feed for offline/airgap parity
|
||||
mkdir -p "$NUGET_PACKAGES"
|
||||
rsync -a "$repo_root/local-nugets/" "$NUGET_PACKAGES/" >/dev/null 2>&1 || true
|
||||
|
||||
# Restore with deterministic sources
|
||||
restore_sources=()
|
||||
|
||||
@@ -13,12 +13,11 @@ Usage
|
||||
Environment defaults
|
||||
- `DOTNET_CLI_TELEMETRY_OPTOUT=1`, `DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1`, `DOTNET_RESTORE_DISABLE_PARALLEL=1`
|
||||
- `NUGET_PACKAGES=$REPO/.nuget/packages`
|
||||
- `NUGET_SOURCES=$REPO/local-nugets;$REPO/.nuget/packages`
|
||||
- `NUGET_SOURCES=$REPO/.nuget/packages`
|
||||
- `TEST_FILTER` empty (set to narrow tests)
|
||||
|
||||
What it does
|
||||
1) Warm NuGet cache from `local-nugets/` into `$NUGET_PACKAGES` for air-gap parity.
|
||||
2) `dotnet restore` + `dotnet build` on `src/SbomService/StellaOps.SbomService.sln` with `/bl`.
|
||||
1) `dotnet restore` + `dotnet build` on `src/SbomService/StellaOps.SbomService.sln` with `/bl`.
|
||||
3) Run `StellaOps.SbomService.Tests` with TRX output (honors `TEST_FILTER`).
|
||||
4) Produce `nuget-cache.hash` using sorted file name+size list hashed with sha256 (lightweight evidence of cache contents).
|
||||
5) Emit `summary.json` with artefact paths and cache hash value.
|
||||
|
||||
@@ -14,11 +14,10 @@ export DOTNET_CLI_TELEMETRY_OPTOUT=${DOTNET_CLI_TELEMETRY_OPTOUT:-1}
|
||||
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=${DOTNET_SKIP_FIRST_TIME_EXPERIENCE:-1}
|
||||
export DOTNET_RESTORE_DISABLE_PARALLEL=${DOTNET_RESTORE_DISABLE_PARALLEL:-1}
|
||||
export NUGET_PACKAGES=${NUGET_PACKAGES:-$repo_root/.nuget/packages}
|
||||
export NUGET_SOURCES=${NUGET_SOURCES:-"$repo_root/local-nugets;$repo_root/.nuget/packages"}
|
||||
export NUGET_SOURCES=${NUGET_SOURCES:-"$repo_root/.nuget/packages"}
|
||||
export TEST_FILTER=${TEST_FILTER:-""}
|
||||
|
||||
mkdir -p "$NUGET_PACKAGES"
|
||||
rsync -a "$repo_root/local-nugets/" "$NUGET_PACKAGES/" >/dev/null 2>&1 || true
|
||||
|
||||
restore_sources=()
|
||||
IFS=';' read -ra SRC_ARR <<< "$NUGET_SOURCES"
|
||||
|
||||
@@ -11,12 +11,11 @@ Usage
|
||||
|
||||
Environment
|
||||
- Defaults: `DOTNET_CLI_TELEMETRY_OPTOUT=1`, `DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1`, `NUGET_PACKAGES=$REPO/.nuget/packages`.
|
||||
- Sources: `NUGET_SOURCES` (semicolon-separated) defaults to `local-nugets` then warmed cache; no internet required when cache is primed.
|
||||
- Sources: `NUGET_SOURCES` (semicolon-separated) defaults to `.nuget/packages`; no internet required when cache is primed.
|
||||
- `TEST_FILTER` can narrow tests (empty = all).
|
||||
|
||||
What it does
|
||||
1) Warm NuGet cache from `local-nugets/` into `$NUGET_PACKAGES`.
|
||||
2) `dotnet restore` + `dotnet build` on `src/Scanner/StellaOps.Scanner.sln` with `/bl`.
|
||||
1) `dotnet restore` + `dotnet build` on `src/Scanner/StellaOps.Scanner.sln` with `/bl`.
|
||||
3) Run Scanner test buckets (core/analyzers/web/worker) with TRX outputs; buckets can be adjusted via `TEST_FILTER` or script edits.
|
||||
4) Emit `summary.json` with artefact paths/hashes for reproducibility.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user