Merge pull request #290 from vue-pivottable/staging #14
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |