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 images / large artifacts
|
||||||
qemu-dietpi/
|
qemu-dietpi/
|
||||||
|
out/
|
||||||
|
|
||||||
# Stock images (large)
|
# Stock images (large)
|
||||||
images/stock/
|
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