feat(release): introduce dedicated release script to replace flawed git push hook
All checks were successful
Monorepo Pipeline / ⚡ Prioritize Release (push) Successful in 7s
Monorepo Pipeline / 🧪 Test (push) Successful in 1m4s
Monorepo Pipeline / 🧹 Lint (push) Successful in 2m50s
Monorepo Pipeline / 🏗️ Build (push) Successful in 2m21s
Monorepo Pipeline / 🚀 Release (push) Has been skipped
Monorepo Pipeline / 🐳 Build Image Processor (push) Has been skipped
Monorepo Pipeline / 🐳 Build Gatekeeper (Product) (push) Has been skipped
Monorepo Pipeline / 🐳 Build Build-Base (push) Has been skipped
Monorepo Pipeline / 🐳 Build Production Runtime (push) Has been skipped
All checks were successful
Monorepo Pipeline / ⚡ Prioritize Release (push) Successful in 7s
Monorepo Pipeline / 🧪 Test (push) Successful in 1m4s
Monorepo Pipeline / 🧹 Lint (push) Successful in 2m50s
Monorepo Pipeline / 🏗️ Build (push) Successful in 2m21s
Monorepo Pipeline / 🚀 Release (push) Has been skipped
Monorepo Pipeline / 🐳 Build Image Processor (push) Has been skipped
Monorepo Pipeline / 🐳 Build Gatekeeper (Product) (push) Has been skipped
Monorepo Pipeline / 🐳 Build Build-Base (push) Has been skipped
Monorepo Pipeline / 🐳 Build Production Runtime (push) Has been skipped
This commit is contained in:
50
scripts/release.sh
Executable file
50
scripts/release.sh
Executable file
@@ -0,0 +1,50 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
VERSION=$1
|
||||
|
||||
if [ -z "$VERSION" ]; then
|
||||
echo "Error: Missing version argument."
|
||||
echo "Usage: pnpm release <version>"
|
||||
echo "Example: pnpm release 1.9.0"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Ensure version does not have 'v' prefix for the variable
|
||||
VERSION=${VERSION#v}
|
||||
TAG="v$VERSION"
|
||||
|
||||
echo "🚀 Starting release process for $TAG..."
|
||||
|
||||
# 1. Sync versions across monorepo
|
||||
pnpm exec tsx scripts/sync-versions.ts -- "$TAG"
|
||||
|
||||
# 2. Check if anything changed
|
||||
SYNC_FILES="package.json packages/*/package.json apps/*/package.json .env.example"
|
||||
CHANGES=$(git status --porcelain $SYNC_FILES)
|
||||
|
||||
if [[ -n "$CHANGES" ]]; then
|
||||
echo "📝 Version sync made changes. Committing and tagging..."
|
||||
|
||||
# Stage and commit
|
||||
git add $SYNC_FILES
|
||||
git commit -m "chore: release $TAG" --no-verify
|
||||
else
|
||||
echo "✨ Versions are already in sync."
|
||||
fi
|
||||
|
||||
# 3. Tag and push
|
||||
echo "🏷️ Tagging $TAG..."
|
||||
git tag -f "$TAG" > /dev/null
|
||||
|
||||
echo "🚀 Pushing branch and tag to origin..."
|
||||
CURRENT_BRANCH=$(git branch --show-current)
|
||||
if [ -n "$CURRENT_BRANCH" ]; then
|
||||
git push origin "$CURRENT_BRANCH" --no-verify
|
||||
fi
|
||||
git push origin "$TAG" --force --no-verify
|
||||
|
||||
echo ""
|
||||
echo "✨ VERSIONS SYNCED & PUSHED SUCCESSFULLY ✨"
|
||||
echo "✅ Release $TAG is complete!"
|
||||
echo ""
|
||||
Reference in New Issue
Block a user