78 lines
1.8 KiB
Bash
Executable file
78 lines
1.8 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Release automation for UniversalisOS.
|
|
#
|
|
# Usage:
|
|
# tools/release.sh <version> # e.g. tools/release.sh 1.0.0-beta.1
|
|
# tools/release.sh --bump patch # auto-bump current version
|
|
#
|
|
# Steps:
|
|
# 1. Update VERSION file
|
|
# 2. Create git tag
|
|
# 3. Build all architectures
|
|
# 4. Package release tarball in release/<version>/
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
VERSION_FILE="$REPO_ROOT/VERSION"
|
|
|
|
cd "$REPO_ROOT"
|
|
|
|
# --- Parse arguments ---
|
|
NEW_VERSION=""
|
|
BUMP=""
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--bump)
|
|
BUMP="$2"
|
|
shift 2
|
|
;;
|
|
-h|--help)
|
|
echo "Usage: $0 <version> | --bump <major|minor|patch>"
|
|
exit 0
|
|
;;
|
|
*)
|
|
NEW_VERSION="$1"
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# --- Resolve version ---
|
|
if [[ -n "$BUMP" ]]; then
|
|
NEW_VERSION="$(python3 tools/version.py --bump "$BUMP")"
|
|
fi
|
|
|
|
if [[ -z "$NEW_VERSION" ]]; then
|
|
echo "error: provide a version or use --bump" >&2
|
|
echo "Usage: $0 <version> | --bump <major|minor|patch>" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "==> Releasing UniversalisOS $NEW_VERSION"
|
|
echo ""
|
|
|
|
# --- Update VERSION file ---
|
|
echo "$NEW_VERSION" > VERSION
|
|
echo "[1/4] Updated VERSION file to $NEW_VERSION"
|
|
|
|
# --- Create git tag ---
|
|
git add VERSION
|
|
git commit -m "release: v$NEW_VERSION"
|
|
git tag -a "v$NEW_VERSION" -m "Release v$NEW_VERSION"
|
|
echo "[2/4] Created git tag v$NEW_VERSION"
|
|
|
|
# --- Build all architectures ---
|
|
echo "[3/4] Building all architectures..."
|
|
bash tools/build-release.sh "$NEW_VERSION"
|
|
|
|
# --- Package release ---
|
|
echo "[4/4] Packaging release..."
|
|
bash tools/package.sh "$NEW_VERSION"
|
|
|
|
echo ""
|
|
echo "==> Release v$NEW_VERSION complete"
|
|
echo " Artifacts: release/$NEW_VERSION/"
|
|
ls -la "release/$NEW_VERSION/"
|