Skip to content

Merge pull request #290 from vue-pivottable/staging #14

Merge pull request #290 from vue-pivottable/staging

Merge pull request #290 from vue-pivottable/staging #14

name: Update Version in Main
on:
push:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false
jobs:
check-versions:
name: Check for Beta Versions
runs-on: ubuntu-latest
outputs:
has_beta: ${{ steps.check.outputs.has_beta }}
base_version: ${{ steps.check.outputs.base_version }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check for beta versions
id: check
run: |
HAS_BETA=false
BASE_VERSION=""
# Check main package
MAIN_VERSION=$(node -p "require('./package.json').version")
if [[ $MAIN_VERSION == *"-beta"* ]]; then
HAS_BETA=true
BASE_VERSION=$(echo $MAIN_VERSION | sed 's/-beta.*//')
echo "Found beta in main package: $MAIN_VERSION → $BASE_VERSION"
fi
# Check sub-packages
for pkg in packages/*/; do
if [ -d "$pkg" ] && [ -f "$pkg/package.json" ]; then
PKG_VERSION=$(cd "$pkg" && node -p "require('./package.json').version")
if [[ $PKG_VERSION == *"-beta"* ]]; then
HAS_BETA=true
PKG_BASE=$(echo $PKG_VERSION | sed 's/-beta.*//')
PKG_NAME=$(basename "$pkg")
echo "Found beta in $PKG_NAME: $PKG_VERSION → $PKG_BASE"
fi
fi
done
echo "has_beta=$HAS_BETA" >> $GITHUB_OUTPUT
echo "base_version=$BASE_VERSION" >> $GITHUB_OUTPUT
update-versions:
name: Update Versions and Sync
needs: check-versions
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22.10.0'
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: latest
- name: Install dependencies
run: pnpm install
- name: Configure git
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
- name: Update versions
if: needs.check-versions.outputs.has_beta == 'true'
id: version-update
run: |
echo "📝 Updating package versions..."
# Use changeset version to update versions properly
pnpm changeset version
# Remove any remaining beta suffixes
# Update main package
MAIN_VERSION=$(node -p "require('./package.json').version")
if [[ $MAIN_VERSION == *"-beta"* ]]; then
CLEAN_VERSION=$(echo $MAIN_VERSION | sed 's/-beta.*//')
npm version $CLEAN_VERSION --no-git-tag-version
echo "Updated main package to $CLEAN_VERSION"
fi
# Update sub-packages
for pkg in packages/*/; do
if [ -d "$pkg" ] && [ -f "$pkg/package.json" ]; then
cd "$pkg"
PKG_VERSION=$(node -p "require('./package.json').version")
if [[ $PKG_VERSION == *"-beta"* ]]; then
CLEAN_VERSION=$(echo $PKG_VERSION | sed 's/-beta.*//')
npm version $CLEAN_VERSION --no-git-tag-version
PKG_NAME=$(basename "$pkg")
echo "Updated $PKG_NAME to $CLEAN_VERSION"
fi
cd - > /dev/null
fi
done
# Get final version for output
FINAL_VERSION=$(node -p "require('./package.json').version")
echo "version=$FINAL_VERSION" >> $GITHUB_OUTPUT
- name: Commit version updates
run: |
git add -A
git commit -m "chore: update versions to stable
- Remove beta suffixes
- Update CHANGELOG.md files
- Prepare for production release" || echo "No changes to commit"
- name: Push to main
run: |
git push origin main
- name: Sync to develop
run: |
echo "🔄 Syncing changes to develop branch..."
# Fetch and checkout develop
git fetch origin develop:develop
git checkout develop
# Merge main changes (allow fast-forward for clean sync)
git merge main
# Push directly to develop
git push origin develop
echo "✅ Successfully synced main to develop"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Sync to staging
run: |
echo "🔄 Syncing changes to staging branch..."
# Fetch and checkout staging
git fetch origin staging:staging
git checkout staging
# Merge main changes (allow fast-forward for clean sync)
git merge main
# Push directly to staging
git push origin staging
echo "✅ Successfully synced main to staging"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create release summary
run: |
VERSION="${{ steps.version-update.outputs.version }}"
echo "## ✅ Version Update Complete" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### 📦 Version: v$VERSION" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### 🏷️ Next Steps" >> $GITHUB_STEP_SUMMARY
echo "To publish this version to npm, create and push a tag:" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY
echo "git checkout main" >> $GITHUB_STEP_SUMMARY
echo "git pull origin main" >> $GITHUB_STEP_SUMMARY
echo "git tag v$VERSION" >> $GITHUB_STEP_SUMMARY
echo "git push origin v$VERSION" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### 🔄 Sync PRs Created" >> $GITHUB_STEP_SUMMARY
echo "- PR to develop branch" >> $GITHUB_STEP_SUMMARY
echo "- PR to staging branch" >> $GITHUB_STEP_SUMMARY