Skip to content

Commit 05f1193

Browse files
committed
fix: download-github-release now downloads all release artifacts
Update download-github-release recipe to use `gh release download` instead of curl-based downloads for specific files. Now downloads: - All wheels (*.whl) - Source distribution (autobahn-*.tar.gz) - Conformance reports tarball - FlatBuffers schema tarball - Chain-of-custody files (checksums, validation, build-info) Also update docs-integrate-github-release to copy chain-of-custody files to docs/_build/html/_static/release/ for documentation. Note: This work was completed with AI assistance (Claude Code).
1 parent 467581c commit 05f1193

1 file changed

Lines changed: 71 additions & 35 deletions

File tree

justfile

Lines changed: 71 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2346,6 +2346,7 @@ wstest-consolidate-reports:
23462346
du -hs docs/_static/websocket/conformance/
23472347

23482348
# Download GitHub release artifacts (usage: `just download-github-release` for nightly, or `just download-github-release stable`)
2349+
# Downloads wheels, sdist, conformance reports, and FlatBuffers schemas
23492350
download-github-release release_type="nightly":
23502351
#!/usr/bin/env bash
23512352
set -e
@@ -2358,8 +2359,7 @@ download-github-release release_type="nightly":
23582359
case "${RELEASE_TYPE}" in
23592360
nightly)
23602361
echo "==> Finding latest nightly release (tagged as master-YYYYMMDDHHMM)..."
2361-
RELEASE_TAG=$(curl -s "https://api.github.com/repos/crossbario/autobahn-python/releases" \
2362-
| grep '"tag_name":' \
2362+
RELEASE_TAG=$(gh release list --repo crossbario/autobahn-python --limit 20 \
23632363
| grep -o 'master-[0-9]*' \
23642364
| head -1)
23652365
if [ -z "$RELEASE_TAG" ]; then
@@ -2371,9 +2371,7 @@ download-github-release release_type="nightly":
23712371

23722372
stable|latest)
23732373
echo "==> Finding latest stable release..."
2374-
RELEASE_TAG=$(curl -s "https://api.github.com/repos/crossbario/autobahn-python/releases/latest" \
2375-
| grep '"tag_name":' \
2376-
| sed 's/.*"tag_name": "\([^"]*\)".*/\1/')
2374+
RELEASE_TAG=$(gh release view --repo crossbario/autobahn-python --json tagName -q '.tagName' 2>/dev/null || true)
23772375
if [ -z "$RELEASE_TAG" ]; then
23782376
echo "❌ ERROR: No stable release found"
23792377
exit 1
@@ -2383,9 +2381,8 @@ download-github-release release_type="nightly":
23832381

23842382
development|dev)
23852383
echo "==> Finding latest development release (tagged as fork-*)..."
2386-
RELEASE_TAG=$(curl -s "https://api.github.com/repos/crossbario/autobahn-python/releases" \
2387-
| grep '"tag_name":' \
2388-
| grep -o 'fork-[^"]*' \
2384+
RELEASE_TAG=$(gh release list --repo crossbario/autobahn-python --limit 20 \
2385+
| grep -o 'fork-[^[:space:]]*' \
23892386
| head -1)
23902387
if [ -z "$RELEASE_TAG" ]; then
23912388
echo "❌ ERROR: No development release found"
@@ -2401,44 +2398,58 @@ download-github-release release_type="nightly":
24012398
;;
24022399
esac
24032400

2404-
BASE_URL="https://github.com/crossbario/autobahn-python/releases/download/${RELEASE_TAG}"
2405-
2406-
# Create temporary directory for artifacts
2401+
# Create download directory
24072402
DOWNLOAD_DIR="/tmp/autobahn-release-artifacts-${RELEASE_TAG}"
24082403
mkdir -p "${DOWNLOAD_DIR}"
2404+
2405+
echo ""
2406+
echo "==> Downloading all release artifacts using gh..."
2407+
gh release download "${RELEASE_TAG}" \
2408+
--repo crossbario/autobahn-python \
2409+
--dir "${DOWNLOAD_DIR}" \
2410+
--clobber
2411+
24092412
cd "${DOWNLOAD_DIR}"
24102413

24112414
echo ""
2412-
echo "==> Downloading WebSocket conformance reports..."
2413-
if curl -fL "${BASE_URL}/autobahn-python-websocket-conformance-${RELEASE_TAG}.tar.gz" \
2414-
-o conformance.tar.gz; then
2415-
echo "✅ Downloaded: autobahn-python-websocket-conformance-${RELEASE_TAG}.tar.gz"
2415+
echo "==> Extracting documentation artifacts..."
2416+
2417+
# Extract conformance reports (for docs integration)
2418+
CONFORMANCE_TARBALL="autobahn-python-websocket-conformance-${RELEASE_TAG}.tar.gz"
2419+
if [ -f "${CONFORMANCE_TARBALL}" ]; then
2420+
mkdir -p conformance-extracted
2421+
tar -xzf "${CONFORMANCE_TARBALL}" -C conformance-extracted
2422+
# Move with-nvx and without-nvx to top level for docs-integrate-github-release
2423+
if [ -d "conformance-extracted/with-nvx" ]; then
2424+
mv conformance-extracted/with-nvx .
2425+
fi
2426+
if [ -d "conformance-extracted/without-nvx" ]; then
2427+
mv conformance-extracted/without-nvx .
2428+
fi
2429+
rm -rf conformance-extracted
2430+
echo "✅ Extracted conformance reports to with-nvx/, without-nvx/"
24162431
else
2417-
echo "⚠️ Failed to download conformance reports (may not exist for this release)"
2432+
echo "⚠️ No conformance tarball found"
24182433
fi
24192434

2420-
echo ""
2421-
echo "==> Downloading FlatBuffers schemas..."
2422-
if curl -fL "${BASE_URL}/flatbuffers-schema.tar.gz" \
2423-
-o flatbuffers-schema.tar.gz; then
2424-
echo "Downloaded: flatbuffers-schema.tar.gz"
2435+
# Extract FlatBuffers schemas (for docs integration)
2436+
if [ -f "flatbuffers-schema.tar.gz" ]; then
2437+
mkdir -p flatbuffers
2438+
tar -xzf flatbuffers-schema.tar.gz -C flatbuffers
2439+
echo "Extracted FlatBuffers schemas to flatbuffers/"
24252440
else
2426-
echo "⚠️ Failed to download FlatBuffers schemas (may not exist for this release)"
2441+
echo "⚠️ No FlatBuffers schema tarball found"
24272442
fi
24282443

24292444
echo ""
2430-
echo "==> Extracting artifacts..."
2431-
if [ -f conformance.tar.gz ]; then
2432-
tar -xzf conformance.tar.gz
2433-
echo "✅ Extracted conformance reports"
2434-
fi
2435-
if [ -f flatbuffers-schema.tar.gz ]; then
2436-
tar -xzf flatbuffers-schema.tar.gz
2437-
echo "✅ Extracted FlatBuffers schemas"
2438-
fi
2439-
2445+
echo "==> Downloaded artifacts inventory:"
2446+
echo ""
2447+
WHEEL_COUNT=$(find . -maxdepth 1 -name "*.whl" | wc -l)
2448+
SDIST_COUNT=$(find . -maxdepth 1 -name "autobahn-*.tar.gz" | wc -l)
2449+
echo "Wheels: ${WHEEL_COUNT}"
2450+
echo "Source dist: ${SDIST_COUNT}"
24402451
echo ""
2441-
echo "==> Downloaded and extracted artifacts:"
2452+
echo "Files:"
24422453
ls -lh
24432454

24442455
echo ""
@@ -2449,9 +2460,11 @@ download-github-release release_type="nightly":
24492460
echo "Release: ${RELEASE_TAG}"
24502461
echo "Location: ${DOWNLOAD_DIR}"
24512462
echo ""
2452-
echo "To use these artifacts:"
2463+
echo "Contents:"
2464+
echo " - Wheels: ${DOWNLOAD_DIR}/*.whl"
2465+
echo " - Source dist: ${DOWNLOAD_DIR}/autobahn-*.tar.gz"
24532466
echo " - Conformance reports: ${DOWNLOAD_DIR}/with-nvx/, ${DOWNLOAD_DIR}/without-nvx/"
2454-
echo " - FlatBuffers schemas: ${DOWNLOAD_DIR}/*.fbs, ${DOWNLOAD_DIR}/*.bfbs"
2467+
echo " - FlatBuffers schemas: ${DOWNLOAD_DIR}/flatbuffers/"
24552468
echo ""
24562469

24572470
# Integrate downloaded GitHub release artifacts into docs build (usage: `just docs-integrate-github-release` or `just docs-integrate-github-release master-202510180103`)
@@ -2582,6 +2595,24 @@ docs-integrate-github-release release_tag="":
25822595
fi
25832596
fi
25842597

2598+
# Copy chain-of-custody / verification files
2599+
echo "==> Copying chain-of-custody files..."
2600+
mkdir -p docs/_build/html/_static/release
2601+
CUSTODY_COUNT=0
2602+
for pattern in "*CHECKSUMS.sha256" "*VALIDATION.txt" "*build-info.txt" "*.verify.txt"; do
2603+
for f in ${DOWNLOAD_DIR}/${pattern}; do
2604+
if [ -f "$f" ]; then
2605+
cp "$f" docs/_build/html/_static/release/
2606+
CUSTODY_COUNT=$((CUSTODY_COUNT + 1))
2607+
fi
2608+
done
2609+
done
2610+
if [ "${CUSTODY_COUNT}" -gt 0 ]; then
2611+
echo "✅ Copied ${CUSTODY_COUNT} chain-of-custody files to docs/_build/html/_static/release/"
2612+
else
2613+
echo "⚠️ No chain-of-custody files found in ${DOWNLOAD_DIR}"
2614+
fi
2615+
25852616
echo ""
25862617
echo "════════════════════════════════════════════════════════════"
25872618
echo "✅ GitHub release artifacts integrated into built documentation"
@@ -2590,6 +2621,11 @@ docs-integrate-github-release release_tag="":
25902621
echo "Integrated artifacts from: ${RELEASE_TAG}"
25912622
echo "Target location: docs/_build/html/_static/"
25922623
echo ""
2624+
echo "Contents integrated:"
2625+
echo " - Conformance reports: docs/_build/html/_static/websocket/conformance/"
2626+
echo " - FlatBuffers schemas: docs/_build/html/_static/flatbuffers/"
2627+
echo " - Chain-of-custody: docs/_build/html/_static/release/"
2628+
echo ""
25932629
echo "Next steps:"
25942630
echo " 1. View documentation: just docs-view"
25952631
echo " 2. Check conformance reports at: http://localhost:8000/websocket/conformance.html"

0 commit comments

Comments
 (0)