name: CI on: pull_request: jobs: build-and-deploy: runs-on: ubuntu-latest permissions: write-all steps: - name: Checkout repository uses: actions/checkout@master - name: Setup Java JDK uses: actions/setup-java@v1.4.3 with: java-version: 17 java-package: jre - uses: actions/setup-node@v4 with: node-version: 22 # cache: "pnpm" - name: Install pnpm uses: pnpm/action-setup@v4 - run: pnpm install - run: pnpm check-build - name: Create zip package for size comparison run: | mkdir -p package cp -r dist package/ cd package zip -r ../self-host.zip . - run: pnpm build-single-file - run: pnpm build-playground - run: pnpm build-storybook - run: pnpm test-unit - run: pnpm lint # - run: pnpm tsx scripts/buildNpmReact.ts - run: nohup pnpm prod-start & - run: nohup pnpm test-mc-server & - uses: cypress-io/github-action@v5 with: install: false - uses: actions/upload-artifact@v4 if: failure() with: name: cypress-images path: cypress/screenshots/ # - run: node scripts/outdatedGitPackages.mjs # if: ${{ github.event.pull_request.base.ref == 'release' }} # env: # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Parse Bundle Stats run: | SIZE_BYTES=$(du -s dist/single/minecraft.html 2>/dev/null | cut -f1) GZIP_BYTES=$(du -s self-host.zip 2>/dev/null | cut -f1) SIZE=$(echo "scale=2; $SIZE_BYTES/1024/1024" | bc) GZIP_SIZE=$(echo "scale=2; $GZIP_BYTES/1024/1024" | bc) echo "{\"total\": ${SIZE}, \"gzipped\": ${GZIP_SIZE}}" > /tmp/bundle-stats.json - name: Compare Bundle Stats id: compare uses: ./.github/workflows/bundle-stats with: mode: compare branch: ${{ github.event.pull_request.base.ref }} - name: Store Bundle Stats if: github.event.pull_request.base.ref == 'next' uses: ./.github/workflows/bundle-stats with: mode: store branch: ${{ github.event.pull_request.base.ref }} - name: Update PR Description uses: actions/github-script@v6 with: script: | const { data: pr } = await github.rest.pulls.get({ owner: context.repo.owner, repo: context.repo.repo, pull_number: context.issue.number }); let body = pr.body || ''; const statsMarker = '### Bundle Size'; const comparison = '${{ steps.compare.outputs.stats }}'; if (body.includes(statsMarker)) { body = body.replace( new RegExp(`${statsMarker}[^\n]*\n[^\n]*`), `${statsMarker}\n${comparison}` ); } else { body += `\n\n${statsMarker}\n${comparison}`; } await github.rest.pulls.update({ owner: context.repo.owner, repo: context.repo.repo, pull_number: context.issue.number, body }); # dedupe-check: # runs-on: ubuntu-latest # if: github.event.pull_request.head.ref == 'next' # steps: # - name: Checkout repository # uses: actions/checkout@v2 # - name: Install pnpm # run: npm install -g pnpm@9.0.4 # - name: Run pnpm dedupe # run: pnpm dedupe # - name: Check for changes # run: | # if ! git diff --exit-code --quiet pnpm-lock.yaml; then # echo "pnpm dedupe introduced changes:" # git diff --color=always pnpm-lock.yaml # exit 1 # else # echo "No changes detected after pnpm dedupe in pnpm-lock.yaml" # fi