Into The Wild #10963
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Credit for fingerprint action https://github.com/expo/expo | |
# https://github.com/expo/expo/blob/main/.github/workflows/pr-labeler.yml | |
--- | |
name: PR Tests | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
types: [opened, synchronize] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }} | |
cancel-in-progress: true | |
permissions: | |
pull-requests: write | |
actions: write | |
contents: read | |
jobs: | |
webpack-analyzer: | |
runs-on: ubuntu-22.04 | |
if: ${{ github.event.pull_request.head.repo.full_name == github.repository && github.event_name == 'pull_request'}} | |
steps: | |
- name: ⬇️ Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: 🔧 Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version-file: .nvmrc | |
cache: yarn | |
- name: Ensure tracking relevant branches and checkout base | |
run: | | |
git checkout ${{ github.head_ref }} | |
git checkout ${{ github.base_ref }} | |
- name: Get the base commit | |
id: base-commit | |
run: echo base-commit=$(git log -n 1 ${{ github.base_ref }} --pretty=format:'%H') >> "$GITHUB_OUTPUT" | |
- name: Merge PR commit | |
run: | | |
# Have to set a git config for the merge to work | |
git config --global user.email "github-actions[bot]@users.noreply.github.com" | |
git config --global user.name "github-actions[bot]" | |
git merge --no-edit ${{ github.head_ref }} | |
yarn install | |
- name: 🔦 Generate stats file for PR | |
run: | | |
yarn generate-webpack-stats-file | |
mv stats.json ../stats-new.json | |
- name: ⬇️ Get base stats from cache | |
id: get-base-stats | |
uses: actions/cache@v4 | |
with: | |
path: stats-base.json | |
key: stats-base-${{ steps.base-commit.outputs.base-commit }} | |
- name: Restore to base commit | |
if: ${{ !steps.get-base-stats.outputs.cache-hit }} | |
run: | | |
git reset HEAD~ | |
git restore . | |
- name: 🔦 Generate stats file from base commit | |
if: ${{ !steps.get-base-stats.outputs.cache-hit }} | |
run: | | |
yarn install | |
yarn generate-webpack-stats-file | |
mv stats.json stats-base.json | |
- name: % Get diff | |
id: get-diff | |
uses: NejcZdovc/bundle-size-diff@v1 | |
with: | |
base_path: 'stats-base.json' | |
pr_path: '../stats-new.json' | |
excluded_assets: '(.+).chunk.js|(.+).js.map|(.+).json|(.+).png' | |
- name: 💬 Drop a comment | |
uses: marocchino/sticky-pull-request-comment@v2 | |
with: | |
header: bundle-diff | |
message: | | |
| Old size | New size | Diff | | |
|----------|----------|-----------------------| | |
| ${{ steps.get-diff.outputs.base_file_string }} | ${{ steps.get-diff.outputs.pr_file_string }} | ${{ steps.get-diff.outputs.diff_file_string }} (${{ steps.get-diff.outputs.percent }}%) | | |
--- | |
fingerprint-native: | |
runs-on: ubuntu-22.04 | |
if: ${{ github.event.pull_request.head.repo.full_name == github.repository && github.event_name == 'pull_request'}} | |
steps: | |
- name: ⬇️ Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 100 | |
- name: ⬇️ Fetch commits from base branch | |
run: git fetch origin main:main --depth 100 | |
if: github.event_name == 'pull_request' | |
- name: 🔧 Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version-file: .nvmrc | |
cache: yarn | |
- name: 📷 Check fingerprint and install dependencies | |
id: fingerprint | |
uses: bluesky-social/github-actions/fingerprint-native@main | |
with: | |
profile: pull-request | |
- name: 💬 Drop a comment | |
uses: marocchino/sticky-pull-request-comment@v2 | |
if: ${{ steps.fingerprint.outputs.includes-changes }} | |
with: | |
header: fingerprint-diff | |
message: | | |
The Pull Request introduced fingerprint changes against the base commit: | |
<details><summary>Fingerprint diff</summary> | |
```json | |
${{ steps.fingerprint.outputs.diff }} | |
``` | |
</details> | |
--- | |
*Generated by [PR labeler](https://github.com/expo/expo/actions/workflows/pr-labeler.yml) 🤖* | |
- name: 💬 Delete comment | |
uses: marocchino/sticky-pull-request-comment@v2 | |
if: ${{ !steps.fingerprint.outputs.includes-changes }} | |
with: | |
header: fingerprint-diff | |
delete: true | |