Add release bundle builder script
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -22,7 +22,7 @@ Thumbs.db
|
||||
|
||||
# QEMU images / large artifacts
|
||||
qemu-dietpi/
|
||||
out/
|
||||
|
||||
# Stock images (large)
|
||||
images/stock/
|
||||
|
||||
|
||||
61
tools/release/make-release.sh
Normal file
61
tools/release/make-release.sh
Normal file
@@ -0,0 +1,61 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Build a Pi-Kit release bundle (tar.gz) and a manifest.json with SHA256.
|
||||
# Usage: ./tools/release/make-release.sh <version> [base_download_url]
|
||||
# Example base URL: https://git.44r0n.cc/44r0n7/pi-kit/releases/download/v1.0.0
|
||||
|
||||
if [[ $# -lt 1 ]]; then
|
||||
echo "Usage: $0 <version> [base_download_url]" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
VERSION="$1"
|
||||
BASE_URL="${2:-https://example.com/releases}"
|
||||
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
||||
OUT_DIR="$ROOT/out/releases"
|
||||
STAGE="$OUT_DIR/stage-$VERSION"
|
||||
BUNDLE_NAME="pikit-${VERSION}.tar.gz"
|
||||
BUNDLE_PATH="$OUT_DIR/$BUNDLE_NAME"
|
||||
MANIFEST_PATH="$OUT_DIR/manifest.json"
|
||||
|
||||
rm -rf "$STAGE"
|
||||
mkdir -p "$STAGE" "$OUT_DIR"
|
||||
|
||||
echo "Staging files..."
|
||||
# Copy managed files; adjust as needed
|
||||
rsync -a --delete \
|
||||
--exclude 'node_modules' \
|
||||
--exclude '.git' \
|
||||
--exclude 'test-results' \
|
||||
--exclude 'playwright-report' \
|
||||
--exclude '.cache' \
|
||||
--exclude '.vite' \
|
||||
"$ROOT/pikit-web/" "$STAGE/pikit-web/"
|
||||
|
||||
cp "$ROOT/pikit-api.py" "$STAGE/"
|
||||
cp "$ROOT/pikit-services.json" "$STAGE/" 2>/dev/null || true
|
||||
cp "$ROOT/set_ready.sh" "$STAGE/" 2>/dev/null || true
|
||||
cp "$ROOT/start-codex.sh" "$STAGE/" 2>/dev/null || true
|
||||
|
||||
echo "Packing bundle..."
|
||||
tar -C "$STAGE" -czf "$BUNDLE_PATH" .
|
||||
|
||||
echo "Computing sha256..."
|
||||
SHA256=$(sha256sum "$BUNDLE_PATH" | awk '{print $1}')
|
||||
|
||||
cat > "$MANIFEST_PATH" <<EOF
|
||||
{
|
||||
"version": "$VERSION",
|
||||
"bundle": "$BASE_URL/$BUNDLE_NAME",
|
||||
"changelog": "$BASE_URL/CHANGELOG-$VERSION.txt",
|
||||
"files": [
|
||||
{ "path": "bundle.tar.gz", "sha256": "$SHA256" }
|
||||
]
|
||||
}
|
||||
EOF
|
||||
|
||||
echo "Done."
|
||||
echo "Bundle : $BUNDLE_PATH"
|
||||
echo "Manifest: $MANIFEST_PATH"
|
||||
echo "Upload both to your release (bundle as $BUNDLE_NAME, manifest as manifest.json)."
|
||||
Reference in New Issue
Block a user