Implement a Github Workflow for Issues Auto-comment #84
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: Auto Label Issue and PR | |
on: | |
issues: | |
types: [opened, reopened, edited] | |
pull_request: | |
types: [opened, reopened, edited] | |
jobs: | |
label_issue_or_pr: | |
runs-on: ubuntu-latest | |
permissions: | |
issues: write | |
pull-requests: write | |
steps: | |
- name: Label Issue or PR | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{secrets.GITHUB_TOKEN}} | |
script: | | |
const item = context.payload.issue || context.payload.pull_request; | |
const itemBody = item.body ? item.body.toLowerCase() : ''; | |
const itemTitle = item.title.toLowerCase(); | |
// Labels to always add to all issues and PRs | |
const baseLabels = ['gssoc-ext', 'level1']; | |
const labelsToAdd = new Set(baseLabels); | |
// Utility function to add labels to the Set | |
const addLabel = (label) => { | |
labelsToAdd.add(label); | |
}; | |
// Conditional labels based on content | |
if (itemBody.includes('documentation') || itemTitle.includes('doc') || itemBody.includes('readme')) { | |
addLabel('documentation'); | |
} | |
if (itemBody.includes('bug') || itemTitle.includes('bug')) { | |
addLabel('bug'); | |
} | |
if (itemBody.includes('feature') || itemTitle.includes('enhancement')) { | |
addLabel('enhancement'); | |
} | |
if (itemBody.includes('level1') || itemTitle.includes('level1')) { | |
addLabel('level1'); | |
} | |
// Apply labels | |
if (labelsToAdd.size > 0) { | |
await github.rest.issues.addLabels({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: item.number, | |
labels: Array.from(labelsToAdd), | |
}); | |
} | |