up
Some checks failed
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
Docs CI / lint-and-preview (push) Has been cancelled

This commit is contained in:
StellaOps Bot
2025-11-24 09:07:40 +02:00
parent 150b3730ef
commit e6119cbe91
59 changed files with 1827 additions and 204 deletions

View File

@@ -0,0 +1,46 @@
#!/usr/bin/env bash
set -euo pipefail
# Package a scanner analyzer plugin with checksum and SBOM.
# Usage: package-analyzer.sh <project-path> <name>
if [[ $# -lt 2 ]]; then
echo "Usage: $0 <project-path> <name>" >&2
exit 64
fi
PROJECT=$1
NAME=$2
CONFIG=${CONFIG:-Release}
RID=${RID:-linux-x64}
OUT_ROOT="out/scanner-analyzers/${NAME}"
PUBLISH_DIR="${OUT_ROOT}/publish"
mkdir -p "$PUBLISH_DIR"
if ! command -v dotnet >/dev/null 2>&1; then
echo "[analyzer] dotnet CLI not found" >&2
exit 69
fi
echo "[analyzer] publishing ${NAME} (${PROJECT}) for ${RID}"
dotnet publish "$PROJECT" -c "$CONFIG" -r "$RID" --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=false -o "$PUBLISH_DIR" >/dev/null
ARCHIVE="${OUT_ROOT}/${NAME}-${RID}.tar.gz"
tar -C "$PUBLISH_DIR" -czf "$ARCHIVE" .
sha256sum "$ARCHIVE" > "${ARCHIVE}.sha256"
if command -v syft >/dev/null 2>&1; then
syft "dir:${PUBLISH_DIR}" -o json > "${ARCHIVE}.sbom.json"
fi
cat > "${OUT_ROOT}/manifest.json" <<EOF
{
"name": "${NAME}",
"project": "${PROJECT}",
"rid": "${RID}",
"generated_at": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")",
"archive": "$(basename "$ARCHIVE")"
}
EOF
echo "[analyzer] packaged ${NAME} at ${ARCHIVE}"