Skip to content

1. Дябденко Богдан Константинович. 613 #74

1. Дябденко Богдан Константинович. 613

1. Дябденко Богдан Константинович. 613 #74

name: Label PR by group

Check warning on line 1 in .github/workflows/label-by-group.yml

View workflow run for this annotation

GitHub Actions / Label PR by group

Workflow execution policy warning (evaluate mode)

On November 2, 2026, GitHub will restrict `pull_request_target` on public repositories by default. To continue allowing the event trigger, configure an Actions policy. Learn more: https://gh.io/securely-using-pull_request_target#default-policy-for-pull_request_target
on:
pull_request_target:
types: [opened, edited, reopened]
permissions:
pull-requests: write
jobs:
label-selection:
runs-on: ubuntu-latest
steps:
- name: Set label from PR title
uses: actions/github-script@v7
with:
script: |
const title = context.payload.pull_request.title;
// Expected title format: "<hw number>. <full name>. <group number>"
const parts = title.split(".").map((part) => part.trim());
if (parts.length !== 3 || parts.some((part) => part.length === 0)) {
console.log(`Title "${title}" does not match the expected template, skipping.`);
return;
}
const [hwNumber, , groupNumber] = parts;
if (!/^\d+$/.test(hwNumber)) {
console.log(`Title "${title}" does not match the expected template, skipping.`);
return;
}
const { data: labels } = await github.rest.issues.listLabelsForRepo({
owner: context.repo.owner,
repo: context.repo.repo,
});
const matchingLabel = labels.find((label) => label.name === groupNumber);
if (!matchingLabel) {
console.log(`No label named "${groupNumber}" found, skipping.`);
return;
}
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number,
labels: [matchingLabel.name],
});