name: Label PRs by Type of Change on: pull_request_target: types: [opened, edited, synchronize] jobs: label-pr: runs-on: ubuntu-latest permissions: pull-requests: write issues: write contents: read # Often needed for github-script steps: - name: Check PR body for Type of Change uses: actions/github-script@v7 with: script: | const prBody = context.payload.pull_request.body || ''; const labelsToAdd = []; if (/\[x\]\s*New feature/i.test(prBody)) { labelsToAdd.push('new feature'); } if (/\[x\]\s*Bug fix/i.test(prBody)) { labelsToAdd.push('bug'); } if (/\[x\]\s*Documentation update/i.test(prBody)) { labelsToAdd.push('documentation'); } if (/\[x\]\s*Hotfix/i.test(prBody)) { labelsToAdd.push('hotfix'); } if (/\[x\]\s*UI\/UX improvement/i.test(prBody)) { labelsToAdd.push('ui update'); } if (labelsToAdd.length > 0) { await github.rest.issues.addLabels({ owner: context.repo.owner, repo: context.repo.repo, issue_number: context.payload.pull_request.number, labels: labelsToAdd }); }