[docs] Add 'isNew' metadata item and improve linting instructions in … #2
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
name: PR labeler | |
on: | |
workflow_dispatch: {} | |
push: | |
branches: [main] | |
paths: | |
- .github/workflows/pr-labeler.yml | |
- apps/bare-expo/** | |
- apps/test-suite/** | |
- packages/** | |
- yarn.lock | |
# Adding new paths should also update the following "Get the base commit" step's paths | |
pull_request: | |
types: [opened, synchronize] | |
paths: | |
- .github/workflows/pr-labeler.yml | |
- apps/bare-expo/** | |
- apps/test-suite/** | |
- packages/** | |
- yarn.lock | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
test-suite-fingerprint: | |
runs-on: ubuntu-22.04 | |
if: ${{ github.event.pull_request.head.repo.full_name == github.repository || 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: 18 | |
- name: ♻️ Restore caches | |
uses: ./.github/actions/expo-caches | |
id: expo-caches | |
with: | |
yarn-workspace: 'true' | |
- name: 🧶 Install node modules in root dir | |
if: steps.expo-caches.outputs.yarn-workspace-hit != 'true' | |
run: yarn install --frozen-lockfile | |
- name: Get the base commit | |
id: base-commit | |
run: | | |
# Since we limit this pr-labeler workflow only triggered from limited paths, we should use custom base commit | |
echo base-commit=$(git log -n 1 main --pretty=format:'%H' -- .github/workflows/pr-labeler.yml apps/bare-expo apps/test-suite packages yarn.lock) >> "$GITHUB_OUTPUT" | |
- name: 📷 Check fingerprint | |
id: fingerprint | |
uses: expo/expo-github-action/fingerprint@main | |
with: | |
working-directory: apps/bare-expo | |
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@v7 | |
if: ${{ github.event_name == 'pull_request' && steps.fingerprint.outputs.previous-fingerprint != '' && 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@v7 | |
if: ${{ github.event_name == 'pull_request' && steps.fingerprint.outputs.previous-fingerprint != '' && 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@v3 | |
if: ${{ github.event_name == 'pull_request' }} | |
id: old_comment | |
with: | |
issue-number: ${{ github.event.pull_request.number }} | |
comment-author: 'expo-bot' | |
body-includes: <!-- pr-labeler comment --> | |
- name: 💬 Add comment with fingerprint | |
if: ${{ github.event_name == 'pull_request' && steps.fingerprint.outputs.previous-fingerprint != '' && steps.fingerprint.outputs.fingerprint-diff != '[]' && steps.old_comment.outputs.comment-id == '' }} | |
uses: actions/github-script@v7 | |
with: | |
github-token: ${{ secrets.EXPO_BOT_GITHUB_TOKEN }} | |
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.previous-fingerprint != '' && steps.fingerprint.outputs.fingerprint-diff != '[]' && steps.old_comment.outputs.comment-id != '' }} | |
uses: actions/github-script@v7 | |
with: | |
github-token: ${{ secrets.EXPO_BOT_GITHUB_TOKEN }} | |
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.previous-fingerprint != '' && steps.fingerprint.outputs.fingerprint-diff == '[]' && steps.old_comment.outputs.comment-id != '' }} | |
uses: actions/github-script@v7 | |
with: | |
github-token: ${{ secrets.EXPO_BOT_GITHUB_TOKEN }} | |
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, | |
}); |