name: π Version Migration - Deprecate Old + Publish New
# Manual trigger only - one-time migration
on:
workflow_dispatch:
inputs:
deprecate_puppeteer:
description: 'π« Deprecate old brave-real-puppeteer-core versions'
required: false
default: true
type: boolean
deprecate_playwright:
description: 'π« Deprecate old brave-real-playwright-core versions'
required: false
default: true
type: boolean
publish_new:
description: 'π Publish new versions with upstream-aligned scheme'
required: false
default: true
type: boolean
dry_run:
description: 'π§ͺ Dry run (show commands without executing)'
required: false
default: false
type: boolean
env:
NODE_VERSION: '20'
jobs:
migrate:
name: π Version Migration
runs-on: ubuntu-latest
steps:
- name: π₯ Checkout
uses: actions/checkout@v4
with:
token: ${{ secrets.GH_TOKEN || github.token }}
fetch-depth: 0
- name: π’ Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
registry-url: 'https://registry.npmjs.org'
- name: βοΈ Configure Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
- name: π¦ Install Dependencies
run: npm install
- name: π Get Current Versions
id: versions
run: |
# Get upstream versions
PUPPETEER_UPSTREAM=$(npm view puppeteer-core version)
PLAYWRIGHT_UPSTREAM=$(npm view playwright-core version)
echo "puppeteer_upstream=$PUPPETEER_UPSTREAM" >> $GITHUB_OUTPUT
echo "playwright_upstream=$PLAYWRIGHT_UPSTREAM" >> $GITHUB_OUTPUT
echo "π¦ Upstream puppeteer-core: $PUPPETEER_UPSTREAM"
echo "π¦ Upstream playwright-core: $PLAYWRIGHT_UPSTREAM"
# New versions
echo "π¦ New brave-real-puppeteer-core: ${PUPPETEER_UPSTREAM}-brave.1"
echo "π¦ New brave-real-playwright-core: ${PLAYWRIGHT_UPSTREAM}-brave.1"
- name: π« Deprecate Old brave-real-puppeteer-core Versions
if: github.event.inputs.deprecate_puppeteer == 'true'
run: |
echo "π« Deprecating old brave-real-puppeteer-core versions..."
DEPRECATION_MSG="This version uses old versioning. Please use ${{ steps.versions.outputs.puppeteer_upstream }}-brave.x versions which align with upstream puppeteer-core."
if [ "${{ github.event.inputs.dry_run }}" = "true" ]; then
echo "π§ͺ DRY RUN - Would deprecate: brave-real-puppeteer-core@<25.0.0"
echo "Message: $DEPRECATION_MSG"
else
# Deprecate all versions less than 25.0.0 (covers all 24.52.x, 24.53.x etc)
npm deprecate "brave-real-puppeteer-core@<25.0.0" "$DEPRECATION_MSG" || echo "Some versions may already be deprecated"
echo "β
Old versions deprecated"
fi
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: π« Deprecate Old brave-real-playwright-core Versions
if: github.event.inputs.deprecate_playwright == 'true'
run: |
echo "π« Deprecating old brave-real-playwright-core versions..."
DEPRECATION_MSG="This version uses old versioning. Please use ${{ steps.versions.outputs.playwright_upstream }}-brave.x versions which align with upstream playwright-core."
if [ "${{ github.event.inputs.dry_run }}" = "true" ]; then
echo "π§ͺ DRY RUN - Would deprecate versions not matching X.Y.Z-brave.N pattern"
echo "Message: $DEPRECATION_MSG"
else
# Deprecate versions with -patch suffix (old scheme)
npm deprecate "brave-real-playwright-core@*-patch.*" "$DEPRECATION_MSG" || echo "Some versions may already be deprecated"
echo "β
Old versions deprecated"
fi
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: π Update Package Versions
if: github.event.inputs.publish_new == 'true'
run: |
echo "π Updating package.json versions..."
PUPPETEER_NEW="${{ steps.versions.outputs.puppeteer_upstream }}-brave.1"
PLAYWRIGHT_NEW="${{ steps.versions.outputs.playwright_upstream }}-brave.1"
# Update puppeteer-core package.json
node -e "
const fs = require('fs');
const pkg = require('./packages/brave-real-puppeteer-core/package.json');
pkg.version = '$PUPPETEER_NEW';
pkg.brave = pkg.brave || {};
pkg.brave.basedOn = { 'puppeteer-core': '${{ steps.versions.outputs.puppeteer_upstream }}' };
pkg.brave.versionScheme = 'upstream-aligned';
fs.writeFileSync('./packages/brave-real-puppeteer-core/package.json', JSON.stringify(pkg, null, 2) + '\n');
console.log('β
Updated brave-real-puppeteer-core to', pkg.version);
"
# Update playwright-core package.json
node -e "
const fs = require('fs');
const pkg = require('./packages/brave-real-playwright-core/package.json');
pkg.version = '$PLAYWRIGHT_NEW';
pkg.brave = pkg.brave || {};
pkg.brave.basedOn = pkg.brave.basedOn || {};
pkg.brave.basedOn['playwright-core'] = '${{ steps.versions.outputs.playwright_upstream }}';
pkg.brave.versionScheme = 'upstream-aligned';
fs.writeFileSync('./packages/brave-real-playwright-core/package.json', JSON.stringify(pkg, null, 2) + '\n');
console.log('β
Updated brave-real-playwright-core to', pkg.version);
"
- name: π Publish brave-real-puppeteer-core
if: github.event.inputs.publish_new == 'true' && github.event.inputs.dry_run != 'true'
run: |
cd packages/brave-real-puppeteer-core
npm publish --access public
echo "β
Published brave-real-puppeteer-core@${{ steps.versions.outputs.puppeteer_upstream }}-brave.1"
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: π Publish brave-real-playwright-core
if: github.event.inputs.publish_new == 'true' && github.event.inputs.dry_run != 'true'
run: |
cd packages/brave-real-playwright-core
npm publish --access public
echo "β
Published brave-real-playwright-core@${{ steps.versions.outputs.playwright_upstream }}-brave.1"
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: π Commit Changes
if: github.event.inputs.publish_new == 'true' && github.event.inputs.dry_run != 'true'
run: |
git add .
git commit -m "π Version migration: aligned with upstream versioning [skip ci]" || echo "No changes"
git push origin HEAD || echo "Push failed"
- name: π Summary
run: |
echo "## π Version Migration Summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### Actions Taken" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Action | Status |" >> $GITHUB_STEP_SUMMARY
echo "|--------|--------|" >> $GITHUB_STEP_SUMMARY
echo "| Deprecate old puppeteer versions | ${{ github.event.inputs.deprecate_puppeteer }} |" >> $GITHUB_STEP_SUMMARY
echo "| Deprecate old playwright versions | ${{ github.event.inputs.deprecate_playwright }} |" >> $GITHUB_STEP_SUMMARY
echo "| Publish new versions | ${{ github.event.inputs.publish_new }} |" >> $GITHUB_STEP_SUMMARY
echo "| Dry run | ${{ github.event.inputs.dry_run }} |" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### New Versioning Scheme" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Package | Old Version | New Version |" >> $GITHUB_STEP_SUMMARY
echo "|---------|-------------|-------------|" >> $GITHUB_STEP_SUMMARY
echo "| brave-real-puppeteer-core | 24.52.x/24.53.x | ${{ steps.versions.outputs.puppeteer_upstream }}-brave.1 |" >> $GITHUB_STEP_SUMMARY
echo "| brave-real-playwright-core | 1.57.0-patch.x | ${{ steps.versions.outputs.playwright_upstream }}-brave.1 |" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### Version Format" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
echo "brave-real-puppeteer-core@24.36.1-brave.1" >> $GITHUB_STEP_SUMMARY
echo " β β" >> $GITHUB_STEP_SUMMARY
echo " upstream patch" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY