Skip to content

chore: upgrade to nextjs 16 (#42) #5

chore: upgrade to nextjs 16 (#42)

chore: upgrade to nextjs 16 (#42) #5

name: 'Next.js Bundle Analysis'
on:
pull_request:
push:
branches:
- main
workflow_dispatch:
defaults:
run:
working-directory: ./
permissions:
contents: read
actions: read
pull-requests: write
jobs:
analyze:
runs-on: ubuntu-latest
env:
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: ${{ secrets.CLERK_PUBLISHABLE_KEY }}
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
with:
node-version: 20
cache: 'npm'
- name: Install Dependencies
run: npm ci
- name: Restore next build
uses: actions/cache@v4
id: restore-build-cache
env:
cache-name: cache-next-build
with:
path: .next/cache
key: ${{ runner.os }}-next-build-${{ hashFiles('package-lock.json', 'next.config.*') }}
restore-keys: |
${{ runner.os }}-next-build-
- name: Build next.js app
env:
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: ${{ secrets.CLERK_PUBLISHABLE_KEY }}
run: npm run build:analyze
- name: Analyze bundle
run: npx -p nextjs-bundle-analysis report
- name: Upload bundle
uses: actions/upload-artifact@v4
with:
name: bundle
path: .next/analyze/__bundle_analysis.json
- name: Download base branch bundle stats
uses: dawidd6/action-download-artifact@v11
if: success() && github.event.number
with:
workflow: nextjs_bundle_analysis.yml
branch: ${{ github.event.pull_request.base.ref }}
name: bundle
path: .next/analyze/base
- name: Compare with base branch bundle
if: success() && github.event.number
run: |
if [ -d ".next/analyze/base" ]; then
ls -laR .next/analyze/base
npx -p nextjs-bundle-analysis compare
else
echo "No base bundle artifact found; skipping comparison."
fi
- name: Get Comment Body
id: get-comment-body
if: success() && github.event.number
run: |
echo "body<<EOF" >> $GITHUB_OUTPUT
echo "$(cat .next/analyze/__bundle_analysis_comment.txt)" >> $GITHUB_OUTPUT
echo EOF >> $GITHUB_OUTPUT
- name: Find Comment
uses: peter-evans/find-comment@v4
if: success() && github.event.number && !github.event.pull_request.head.repo.fork
id: fc
with:
issue-number: ${{ github.event.number }}
body-includes: '<!-- __NEXTJS_BUNDLE -->'
- name: Create Comment
uses: peter-evans/create-or-update-comment@v2
if: success() && github.event.number && !github.event.pull_request.head.repo.fork && steps.fc.outputs.comment-id == 0
with:
issue-number: ${{ github.event.number }}
body: ${{ steps.get-comment-body.outputs.body }}
- name: Update Comment
uses: peter-evans/create-or-update-comment@v5
if: success() && github.event.number && !github.event.pull_request.head.repo.fork && steps.fc.outputs.comment-id != 0
with:
issue-number: ${{ github.event.number }}
body: ${{ steps.get-comment-body.outputs.body }}
comment-id: ${{ steps.fc.outputs.comment-id }}
edit-mode: replace