name: Reviewers - Docs Engineering # **What it does**: Automatically add reviewers based on paths, but only for the docs-internal repo. # And sets the 'engineering' label on the PR. It also edits the PR body to add a template # for asking questions for the sake of being confident about the PRs rollout. # **Why we have it**: So we can have reviewers automatically without getting open source notifications. # **Who does it impact**: Docs team. on: pull_request: types: - edited - opened - ready_for_review - reopened - synchronize paths: - '**.ts' - '**.tsx' - '**.scss' - 'src/**' - '!src/**.json' # So that Docs Engineering isn't reviewing automated pipeline data PRs - '!src/**.yml' # So that Docs Engineering isn't reviewing automated pipeline data PRs - '!src/**.sha' # So that Docs Engineering isn't reviewing automated pipeline data PRs - '.github/**' - 'config/**' - '.devcontainer/**' - '**Dockerfile' - 'package*.json' - .github/workflows/reviewers-docs-engineering.yml permissions: contents: read pull-requests: write repository-projects: read jobs: reviewers-docs-engineering: if: >- ${{ github.repository == 'github/docs-internal' && !github.event.pull_request.draft && !contains(github.event.pull_request.labels.*.name, 'reviewers-docs-engineering') && !contains(github.event.pull_request.labels.*.name, 'lockfile-churn-only') && github.event.pull_request.head.ref != 'repo-sync' }} runs-on: ubuntu-latest env: PR: ${{ github.event.pull_request.html_url }} GH_TOKEN: ${{ secrets.DOCS_BOT_PAT_BASE }} steps: - name: Checkout repository uses: actions/checkout@v6.0.1 # Detect PRs that only changed package-lock.json (no engineering source files). # These are usually cross-platform `npm install` churn from contributors # editing content. We comment with reset instructions instead of pulling in # docs-engineering for review. - name: Detect lockfile-only churn id: detect run: | changed=$(gh pr diff "$PR" --name-only) echo "Changed files:" echo "$changed" lockfile=$(echo "$changed" | grep -c '^package-lock\.json$' || true) other_eng=$(echo "$changed" | grep -cE '(\.tsx?$|\.scss$|^src/|^package\.json$|^\.github/|^config/|^\.devcontainer/|Dockerfile)' || true) if [ "$lockfile" -gt 0 ] && [ "$other_eng" -eq 0 ]; then echo "lockfile_only=true" >> "$GITHUB_OUTPUT" else echo "lockfile_only=false" >> "$GITHUB_OUTPUT" fi - name: Comment and label lockfile-only PRs if: steps.detect.outputs.lockfile_only == 'true' run: | cat > /tmp/lockfile-churn-body.md <<'EOF' _Posted by Copilot on behalf of docs-engineering._ This PR includes `package-lock.json` changes but no engineering files. Please reset the lockfile: ``` git checkout origin/main -- package-lock.json git commit -m "Reset package-lock.json" git push ``` If the lockfile change is intentional, remove the `lockfile-churn-only` label and request docs-engineering review. EOF gh pr comment "$PR" --body-file /tmp/lockfile-churn-body.md gh pr edit "$PR" --add-label lockfile-churn-only - name: Add docs engineering as a reviewer if: steps.detect.outputs.lockfile_only != 'true' uses: ./.github/actions/retry-command with: command: gh pr edit $PR --add-reviewer github/docs-engineering --add-label reviewers-docs-engineering