Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
Signals CI & Image / signals-ci (push) Has been cancelled
Policy Lint & Smoke / policy-lint (push) Has been cancelled
Policy Simulation / policy-simulate (push) Has been cancelled
SDK Publish & Sign / sdk-publish (push) Has been cancelled
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
Concelier Attestation Tests / attestation-tests (push) Has been cancelled
devportal-offline / build-offline (push) Has been cancelled
37 lines
976 B
Bash
37 lines
976 B
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
# Publishes signed NuGet packages to a configured feed (file or HTTP).
|
|
|
|
PACKAGES_GLOB=${PACKAGES_GLOB:-"out/sdk/*.nupkg"}
|
|
SOURCE=${SDK_NUGET_SOURCE:-"local-nugets/packages"}
|
|
API_KEY=${SDK_NUGET_API_KEY:-""}
|
|
|
|
mapfile -t packages < <(ls $PACKAGES_GLOB 2>/dev/null || true)
|
|
if [[ ${#packages[@]} -eq 0 ]]; then
|
|
echo "No packages found under glob '$PACKAGES_GLOB'; nothing to publish."
|
|
exit 0
|
|
fi
|
|
|
|
publish_file() {
|
|
local pkg="$1"
|
|
mkdir -p "$SOURCE"
|
|
cp "$pkg" "$SOURCE"/
|
|
}
|
|
|
|
publish_http() {
|
|
local pkg="$1"
|
|
dotnet nuget push "$pkg" --source "$SOURCE" --api-key "$API_KEY" --skip-duplicate
|
|
}
|
|
|
|
if [[ "$SOURCE" =~ ^https?:// ]]; then
|
|
if [[ -z "$API_KEY" ]]; then
|
|
echo "SDK_NUGET_API_KEY is required for HTTP source $SOURCE" >&2
|
|
exit 1
|
|
fi
|
|
for pkg in "${packages[@]}"; do publish_http "$pkg"; done
|
|
else
|
|
for pkg in "${packages[@]}"; do publish_file "$pkg"; done
|
|
fi
|
|
|
|
echo "Published ${#packages[@]} package(s) to $SOURCE"
|