name: 'Next.js Bundle Analysis' on: push: branches: - 'main' paths: - 'apps/website' pull_request: paths: - 'apps/website' workflow_dispatch: defaults: run: working-directory: ./apps/website jobs: analyze: name: Analyze runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Install node.js v16 uses: actions/setup-node@v3 with: node-version: 16 - name: Install dependencies uses: ./packages/actions/src/yarnCache - name: Restore next build uses: actions/cache@v3 id: restore-build-cache env: cache-name: cache-next-build with: # if you use a custom build directory, replace all instances of `.next` in this file with your build directory # ex: if your app builds to `dist`, replace `.next` with `dist` path: .next/cache # change this if you prefer a more strict cache key: ${{ runner.os }}-build-${{ env.cache-name }} - name: Build website run: yarn workspace @discordjs/website run build:prod - name: Analyze bundle run: npx -p nextjs-bundle-analysis report - name: Upload bundle uses: actions/upload-artifact@v3 with: name: bundle path: .next/analyze/__bundle_analysis.json - name: Download base branch bundle stats uses: dawidd6/action-download-artifact@v2 if: success() && github.event.number with: workflow: nextjs-bundle-analysis.yml branch: ${{ github.event.pull_request.base.ref }} path: .next/analyze/base - name: Compare with base branch bundle if: success() && github.event.number run: ls -laR .next/analyze/base && npx -p nextjs-bundle-analysis compare - name: Get comment body id: get-comment-body if: success() && github.event.number run: | body=$(cat .next/analyze/__bundle_analysis_comment.txt) body="${body//'%'/'%25'}" body="${body//$'\n'/'%0A'}" body="${body//$'\r'/'%0D'}" echo ::set-output name=body::$body - name: Find Comment uses: peter-evans/find-comment@v2 if: success() && github.event.number id: fc with: issue-number: ${{ github.event.number }} body-includes: '' - name: Create Comment uses: peter-evans/create-or-update-comment@v2 if: success() && github.event.number && 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@v2 if: success() && github.event.number && 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