mirror of
https://github.com/mue/mue.git
synced 2026-06-06 07:55:48 +02:00
fix(QuoteOptions): ensure authorDetails is set to true for users upgrading from older versions
166 lines
6.1 KiB
YAML
166 lines
6.1 KiB
YAML
name: Beta Release
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- beta
|
|
tags:
|
|
- "v*-beta.*"
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
build-and-release:
|
|
runs-on: ubuntu-latest
|
|
environment: beta
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Setup Bun
|
|
uses: oven-sh/setup-bun@v2
|
|
with:
|
|
bun-version: "1.3.1"
|
|
|
|
- name: Install dependencies
|
|
run: bun install
|
|
|
|
- name: Build extension
|
|
run: bun run build
|
|
env:
|
|
NODE_ENV: production
|
|
|
|
- name: Get version from package.json
|
|
id: version
|
|
run: |
|
|
VERSION=$(node -p "require('./package.json').version")
|
|
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
|
echo "Building version: $VERSION"
|
|
|
|
- name: Generate changelog
|
|
id: changelog
|
|
run: |
|
|
# Get the latest beta or production tag
|
|
PREVIOUS_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
|
|
|
|
if [ -z "$PREVIOUS_TAG" ]; then
|
|
echo "No previous tag found, using all commits"
|
|
COMMITS=$(git log --pretty=format:"- %s (%h)" HEAD)
|
|
else
|
|
echo "Generating changelog from $PREVIOUS_TAG to HEAD"
|
|
COMMITS=$(git log --pretty=format:"- %s (%h)" ${PREVIOUS_TAG}..HEAD)
|
|
fi
|
|
|
|
# Create changelog with categorization
|
|
FEATURES=$(echo "$COMMITS" | grep -i "^- feat" || echo "")
|
|
FIXES=$(echo "$COMMITS" | grep -i "^- fix" || echo "")
|
|
CHORES=$(echo "$COMMITS" | grep -i "^- chore\|^- docs\|^- style\|^- refactor" || echo "")
|
|
OTHER=$(echo "$COMMITS" | grep -v -i "^- feat\|^- fix\|^- chore\|^- docs\|^- style\|^- refactor" || echo "")
|
|
|
|
{
|
|
echo "changelog<<EOF"
|
|
if [ -n "$FEATURES" ]; then
|
|
echo "### ✨ Features"
|
|
echo "$FEATURES"
|
|
echo ""
|
|
fi
|
|
if [ -n "$FIXES" ]; then
|
|
echo "### 🐛 Bug Fixes"
|
|
echo "$FIXES"
|
|
echo ""
|
|
fi
|
|
if [ -n "$CHORES" ]; then
|
|
echo "### 🔧 Maintenance"
|
|
echo "$CHORES"
|
|
echo ""
|
|
fi
|
|
if [ -n "$OTHER" ]; then
|
|
echo "### 📝 Other Changes"
|
|
echo "$OTHER"
|
|
fi
|
|
echo "EOF"
|
|
} >> $GITHUB_OUTPUT
|
|
|
|
- name: Check if release exists
|
|
id: check_release
|
|
run: |
|
|
if gh release view "v${{ steps.version.outputs.version }}" >/dev/null 2>&1; then
|
|
echo "exists=true" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "exists=false" >> $GITHUB_OUTPUT
|
|
fi
|
|
env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
|
|
- name: Create or Update GitHub Pre-Release
|
|
run: |
|
|
RELEASE_NOTES=$(cat <<EOF
|
|
## 🧪 Mue v${{ steps.version.outputs.version }}
|
|
|
|
**⚠️ This is a beta release for testing purposes only.**
|
|
|
|
### Testing Instructions
|
|
1. Download the appropriate ZIP file below
|
|
2. For Chrome: Load as unpacked extension or install from [unlisted link](https://chromewebstore.google.com/detail/mue/bngmbednanpcfochchhgbkookpiaiaid) (dev team only)
|
|
3. For Firefox: Install via about:debugging → Load Temporary Add-on
|
|
4. Report issues at https://github.com/mue/mue/issues
|
|
|
|
${{ steps.changelog.outputs.changelog }}
|
|
|
|
### Installation Files
|
|
- **Chrome/Edge**: \`chrome-${{ steps.version.outputs.version }}.zip\`
|
|
- **Firefox**: \`firefox-${{ steps.version.outputs.version }}.zip\`
|
|
|
|
---
|
|
|
|
**🔗 Demo**: [demo.muetab.com](https://demo.muetab.com)
|
|
**📱 Beta Branch Demo**: [mue-git-beta-mue.vercel.app](https://mue-git-beta-mue.vercel.app)
|
|
EOF
|
|
)
|
|
|
|
if [ "${{ steps.check_release.outputs.exists }}" = "true" ]; then
|
|
echo "Updating existing release..."
|
|
gh release edit "v${{ steps.version.outputs.version }}" \
|
|
--notes "$RELEASE_NOTES" \
|
|
--prerelease
|
|
|
|
# Upload new files (will replace if they exist)
|
|
gh release upload "v${{ steps.version.outputs.version }}" \
|
|
"build/chrome-${{ steps.version.outputs.version }}.zip" \
|
|
"build/firefox-${{ steps.version.outputs.version }}.zip" \
|
|
--clobber
|
|
else
|
|
echo "Creating new release..."
|
|
gh release create "v${{ steps.version.outputs.version }}" \
|
|
"build/chrome-${{ steps.version.outputs.version }}.zip" \
|
|
"build/firefox-${{ steps.version.outputs.version }}.zip" \
|
|
--title "v${{ steps.version.outputs.version }}" \
|
|
--notes "$RELEASE_NOTES" \
|
|
--prerelease
|
|
fi
|
|
env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
|
|
- name: Output release info
|
|
run: |
|
|
echo "## 🎉 Beta Release Created!" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "**Version**: v${{ steps.version.outputs.version }}" >> $GITHUB_STEP_SUMMARY
|
|
echo "**Release URL**: https://github.com/${{ github.repository }}/releases/tag/v${{ steps.version.outputs.version }}" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "### 📦 Build Artifacts" >> $GITHUB_STEP_SUMMARY
|
|
echo "- Chrome/Edge: \`chrome-${{ steps.version.outputs.version }}.zip\`" >> $GITHUB_STEP_SUMMARY
|
|
echo "- Firefox: \`firefox-${{ steps.version.outputs.version }}.zip\`" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "### 🧪 Testing" >> $GITHUB_STEP_SUMMARY
|
|
echo "Share the release link with beta testers for feedback." >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "### ⚠️ Next Steps" >> $GITHUB_STEP_SUMMARY
|
|
echo "1. Test the beta release thoroughly" >> $GITHUB_STEP_SUMMARY
|
|
echo "2. Gather feedback from testers" >> $GITHUB_STEP_SUMMARY
|
|
echo "3. Fix any critical issues" >> $GITHUB_STEP_SUMMARY
|
|
echo "4. When ready, create PR from \`beta\` → \`main\` for production release" >> $GITHUB_STEP_SUMMARY
|