ci: label pull request based on type in title (#25404)

This commit is contained in:
Damian Głowala 2024-01-24 12:50:40 +01:00 committed by GitHub
parent 1daf92b3de
commit 44fcacba84
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 60 additions and 18 deletions

View File

@ -9,31 +9,73 @@ on:
- 2.x
jobs:
add-pr-label:
name: Add PR label
add-pr-labels:
name: Add PR labels
runs-on: ubuntu-latest
permissions:
pull-requests: write
if: github.repository == 'nuxt/nuxt'
steps:
- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
env:
PULL_REQUEST_TITLE: ${{ github.event.pull_request.title }}
with:
script: |
const baseName = "${{ github.event.pull_request.base.label }}"
const PRNumber = "${{ github.event.pull_request.number }}"
const labelsToAdd = []
if(baseName === "nuxt:2.x") {
github.rest.issues.addLabels({
issue_number: PRNumber,
owner: context.repo.owner,
repo: context.repo.repo,
labels: ["2.x"]
})
} else if(baseName === "nuxt:main") {
github.rest.issues.addLabels({
issue_number: PRNumber,
owner: context.repo.owner,
repo: context.repo.repo,
labels: ["3.x"]
})
const pullRequest = {
baseLabel: ${{ github.event.pull_request.base.label }},
number: ${{ github.event.pull_request.number }},
title: process.env.PULL_REQUEST_TITLE,
labelsNames: ${{ github.event.pull_request.labels }}.map(
(label) => label.name
)
}
// Select label based on the branch name
const branchNameBasedLabelName = {
'nuxt:main': '3.x',
'nuxt:2.x': '2.x'
}[pullRequest.baseLabel]
if (
branchNameBasedLabelName &&
!pullRequest.labelsNames.includes(branchNameBasedLabelName)
) {
labelsToAdd.push(branchNameBasedLabelName)
}
// Select label based on the type in PR title
const eligibleTypesToLabelsNamesMap = {
chore: 'chore',
ci: 'chore',
docs: 'documentation',
feat: 'enhancement',
fix: 'bug',
perf: 'performance',
refactor: 'refactor',
test: 'test'
}
for (const [eligibleType, labelName] of Object.entries(
eligibleTypesToLabelsNamesMap
)) {
if (
pullRequest.title.startsWith(eligibleType) &&
!pullRequest.labelsNames.includes(
eligibleTypesToLabelsNamesMap[eligibleType]
)
) {
labelsToAdd.push(labelName)
break
}
}
// Add selected labels
github.rest.issues.addLabels({
issue_number: pullRequest.number,
owner: context.repo.owner,
repo: context.repo.repo,
labels: labelsToAdd
})