76 lines
2.9 KiB
Bash
76 lines
2.9 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Concelier CI runner harness (DEVOPS-CONCELIER-CI-24-101)
|
|
# Produces warmed-cache restore, build binlog, and TRX outputs for WebService + Storage Mongo tests.
|
|
|
|
repo_root="$(cd "$(dirname "$0")/../../.." && pwd)"
|
|
ts="$(date -u +%Y%m%dT%H%M%SZ)"
|
|
out_dir="$repo_root/ops/devops/artifacts/concelier-ci/$ts"
|
|
logs_dir="$out_dir/tests"
|
|
mkdir -p "$logs_dir"
|
|
|
|
# Deterministic env
|
|
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 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=()
|
|
IFS=';' read -ra SRC_ARR <<< "$NUGET_SOURCES"
|
|
for s in "${SRC_ARR[@]}"; do
|
|
[[ -n "$s" ]] && restore_sources+=(--source "$s")
|
|
done
|
|
|
|
dotnet restore "$repo_root/concelier-webservice.slnf" --ignore-failed-sources "${restore_sources[@]}"
|
|
|
|
# Build with binlog
|
|
build_binlog="$out_dir/build.binlog"
|
|
dotnet build "$repo_root/concelier-webservice.slnf" -c Debug /p:ContinuousIntegrationBuild=true /bl:"$build_binlog"
|
|
|
|
common_test_args=( -c Debug --no-build --results-directory "$logs_dir" )
|
|
if [[ -n "$TEST_FILTER" ]]; then
|
|
common_test_args+=( --filter "$TEST_FILTER" )
|
|
fi
|
|
|
|
# WebService tests
|
|
web_trx="webservice.trx"
|
|
dotnet test "$repo_root/src/Concelier/__Tests/StellaOps.Concelier.WebService.Tests/StellaOps.Concelier.WebService.Tests.csproj" \
|
|
"${common_test_args[@]}" \
|
|
--logger "trx;LogFileName=$web_trx"
|
|
|
|
# Storage Mongo tests
|
|
storage_trx="storage.trx"
|
|
dotnet test "$repo_root/src/Concelier/__Tests/StellaOps.Concelier.Storage.Mongo.Tests/StellaOps.Concelier.Storage.Mongo.Tests.csproj" \
|
|
"${common_test_args[@]}" \
|
|
--logger "trx;LogFileName=$storage_trx"
|
|
|
|
# Summarize artefacts (relative paths to repo root)
|
|
summary="$out_dir/summary.json"
|
|
{
|
|
printf '{\n'
|
|
printf ' "timestamp_utc": "%s",\n' "$ts"
|
|
printf ' "build_binlog": "%s",\n' "${build_binlog#${repo_root}/}"
|
|
printf ' "tests": [\n'
|
|
printf ' {"project": "WebService", "trx": "%s"},\n' "${logs_dir#${repo_root}/}/$web_trx"
|
|
printf ' {"project": "Storage.Mongo", "trx": "%s"}\n' "${logs_dir#${repo_root}/}/$storage_trx"
|
|
printf ' ],\n'
|
|
printf ' "nuget_packages": "%s",\n' "${NUGET_PACKAGES#${repo_root}/}"
|
|
printf ' "sources": [\n'
|
|
for i in "${!SRC_ARR[@]}"; do
|
|
sep=","; [[ $i -eq $((${#SRC_ARR[@]}-1)) ]] && sep=""
|
|
printf ' "%s"%s\n' "${SRC_ARR[$i]}" "$sep"
|
|
done
|
|
printf ' ]\n'
|
|
printf '}\n'
|
|
} > "$summary"
|
|
|
|
echo "Artifacts written to ${out_dir#${repo_root}/}"
|