Enable tags on profile descriptions (close #3081) (#3397) #629
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 labeler | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
types: [opened, synchronize] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
webpack-analyzer: | |
runs-on: ubuntu-22.04 | |
if: ${{ github.event_name == 'pull_request' }} | |
permissions: | |
pull-requests: write | |
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: ⚙️ Install Dependencies | |
run: yarn install | |
- 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 }} | |
- 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 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: 🔍 Find old comment if it exists | |
uses: peter-evans/find-comment@v2 | |
if: ${{ github.event_name == 'pull_request' }} | |
id: old_comment | |
with: | |
issue-number: ${{ github.event.pull_request.number }} | |
comment-author: 'github-actions[bot]' | |
body-includes: <!-- webpack-analyzer comment --> | |
- name: 💬 Add comment with diff | |
uses: actions/github-script@v6 | |
if: ${{ steps.old_comment.outputs.comment-id == '' }} | |
with: | |
script: | | |
const body = `<!-- webpack-analyzer comment --> | |
| 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 }}%) | | |
`; | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: body, | |
}); | |
- name: 💬 Update comment with fingerprint | |
if: ${{ steps.old_comment.outputs.comment-id != '' }} | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
const body = `<!-- webpack-analyzer comment --> | |
| 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 }}%) | | |
`; | |
github.rest.issues.updateComment({ | |
issue_number: context.issue.number, | |
comment_id: '${{ steps.old_comment.outputs.comment-id }}', | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: body, | |
}); | |
test-suite-fingerprint: | |
runs-on: ubuntu-22.04 | |
if: ${{ github.event_name == 'pull_request' || github.event_name == 'push' }} | |
# REQUIRED: limit concurrency when pushing main(default) branch to prevent conflict for this action to update its fingerprint database | |
concurrency: fingerprint-${{ github.event_name != 'pull_request' && 'main' || github.run_id }} | |
permissions: | |
# REQUIRED: Allow comments of PRs | |
pull-requests: write | |
# REQUIRED: Allow updating fingerprint in acton caches | |
actions: write | |
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: ⚙️ Install Dependencies | |
run: yarn install | |
- name: Get the base commit | |
id: base-commit | |
run: echo base-commit=$(git log -n 1 main --pretty=format:'%H') >> "$GITHUB_OUTPUT" | |
- name: 📷 Check fingerprint | |
id: fingerprint | |
uses: expo/expo-github-action/fingerprint@main | |
with: | |
previous-git-commit: ${{ steps.base-commit.outputs.base-commit }} | |
- name: 👀 Debug fingerprint | |
run: | | |
echo "previousGitCommit=${{ steps.fingerprint.outputs.previous-git-commit }} currentGitCommit=${{ steps.fingerprint.outputs.current-git-commit }}" | |
echo "isPreviousFingerprintEmpty=${{ steps.fingerprint.outputs.previous-fingerprint == '' }}" | |
- name: 🏷️ Labeling PR | |
uses: actions/github-script@v6 | |
if: ${{ github.event_name == 'pull_request' && steps.fingerprint.outputs.fingerprint-diff == '[]' }} | |
with: | |
script: | | |
try { | |
await github.rest.issues.removeLabel({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
name: ['bot: fingerprint changed'] | |
}) | |
} catch (e) { | |
if (e.status != 404) { | |
throw e; | |
} | |
} | |
github.rest.issues.addLabels({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
labels: ['bot: fingerprint compatible'] | |
}) | |
- name: 🏷️ Labeling PR | |
uses: actions/github-script@v6 | |
if: ${{ github.event_name == 'pull_request' && steps.fingerprint.outputs.fingerprint-diff != '[]' }} | |
with: | |
script: | | |
try { | |
await github.rest.issues.removeLabel({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
name: ['bot: fingerprint compatible'] | |
}) | |
} catch (e) { | |
if (e.status != 404) { | |
throw e; | |
} | |
} | |
github.rest.issues.addLabels({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
labels: ['bot: fingerprint changed'] | |
}) | |
- name: 🔍 Find old comment if it exists | |
uses: peter-evans/find-comment@v2 | |
if: ${{ github.event_name == 'pull_request' }} | |
id: old_comment | |
with: | |
issue-number: ${{ github.event.pull_request.number }} | |
comment-author: 'github-actions[bot]' | |
body-includes: <!-- pr-labeler comment --> | |
- name: 💬 Add comment with fingerprint | |
if: ${{ github.event_name == 'pull_request' && steps.fingerprint.outputs.fingerprint-diff != '[]' && steps.old_comment.outputs.comment-id == '' }} | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
const diff = JSON.stringify(${{ steps.fingerprint.outputs.fingerprint-diff}}, null, 2); | |
const body = `<!-- pr-labeler comment --> | |
The Pull Request introduced fingerprint changes against the base commit: ${{ steps.fingerprint.outputs.previous-git-commit }} | |
<details><summary>Fingerprint diff</summary> | |
\`\`\`json | |
${diff} | |
\`\`\` | |
</details> | |
--- | |
*Generated by [PR labeler](https://github.com/expo/expo/actions/workflows/pr-labeler.yml) 🤖* | |
`; | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: body, | |
}); | |
- name: 💬 Update comment with fingerprint | |
if: ${{ github.event_name == 'pull_request' && steps.fingerprint.outputs.fingerprint-diff != '[]' && steps.old_comment.outputs.comment-id != '' }} | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
const diff = JSON.stringify(${{ steps.fingerprint.outputs.fingerprint-diff}}, null, 2); | |
const body = `<!-- pr-labeler comment --> | |
The Pull Request introduced fingerprint changes against the base commit: ${{ steps.fingerprint.outputs.previous-git-commit }} | |
<details><summary>Fingerprint diff</summary> | |
\`\`\`json | |
${diff} | |
\`\`\` | |
</details> | |
--- | |
*Generated by [PR labeler](https://github.com/expo/expo/actions/workflows/pr-labeler.yml) 🤖* | |
`; | |
github.rest.issues.updateComment({ | |
issue_number: context.issue.number, | |
comment_id: '${{ steps.old_comment.outputs.comment-id }}', | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: body, | |
}); | |
- name: 💬 Delete comment with fingerprint | |
if: ${{ github.event_name == 'pull_request' && steps.fingerprint.outputs.fingerprint-diff == '[]' && steps.old_comment.outputs.comment-id != '' }} | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
github.rest.issues.deleteComment({ | |
issue_number: context.issue.number, | |
comment_id: '${{ steps.old_comment.outputs.comment-id }}', | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
}); |