armbian-build/.github/workflows/auto-label-pr.yml
Igor Pecovnik f56bfc7553
chore: rename workflow files to action-oriented naming
Rename all workflow files to follow a consistent action-oriented naming pattern similar to armbian.github.io:

- adjust-maintainers.yml → sync-maintainers-status.yml
- clean-workflow-logs.yml → cleanup-workflow-logs.yml
- forked-helper.yml → help-forked.yml
- issue-welcome-first-time.yml → welcome-issue-first-time.yml
- labels-from-yml.yml → sync-labels.yml
- merge-announce.yml → announce-merge.yml
- open-jira-ticket.yml → create-jira-ticket.yml
- pr-announce.yml → announce-pr.yml
- pr-auto-labeler.yml → auto-label-pr.yml
- pr-build-artifacts.yml → build-pr-artifacts.yml
- pr-check-pictures.yml → check-pr-pictures.yml
- pr-kernel-security-analysis.yml → analyze-pr-kernel-security.yml
- pr-label-on-approved.yml → label-pr-on-approval.yml
- pr-lint-scripts.yml → lint-pr-scripts.yml
- pr-review-listener.yml → listen-pr-review.yml
- pr-welcome-first-time.yml → welcome-pr-first-time.yml
- rewrite-kernel-configs.yml → rewrite-kernel-config-files.yml
- update-board-list.yml → sync-board-list.yml
- update-tools.yml → sync-tools.yml

This makes the workflow names more descriptive and consistent with the action verb first, followed by the target object.
2025-12-25 11:43:57 +01:00

114 lines
3.8 KiB
YAML

name: Automatic Pull Request Labeling
# Sets labels automatically based on:
# - PR size (job: label-size)
# - File categories using .github/labeler config (job: label-category)
# - PR creation date for quarterly tracking (job: label-by-date)
# - Removes "Ready to merge" label on PR update (job: label-remove)
run-name: 'Set labels - PR #${{ github.event.pull_request.number }} ("${{ github.event.pull_request.title }}")'
on: pull_request_target
# Grant required permissions globally
permissions:
contents: read # Required for checking changed files
pull-requests: write # Required for labeling PRs
issues: write # Required for adding/removing labels
jobs:
label-remove:
name: "Remove Ready to merge"
if: ${{ github.event.action == 'opened' || github.event.action == 'reopened' || github.event.action == 'synchronize' }}
runs-on: ubuntu-latest
steps:
- name: Checkout the pull request
uses: actions/checkout@v6
- name: Check for label using GH CLI
id: check
run: |
gh pr view ${{ github.event.pull_request.number }} --json labels -q '.labels[].name' | grep -q 'Ready to merge' && echo "has_label=true" >> $GITHUB_OUTPUT || echo "has_label=false" >> $GITHUB_OUTPUT
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Remove "Ready to merge" label
if: steps.check.outputs.has_label == 'true'
uses: PauMAVA/add-remove-label-action@v1.0.3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
add: ""
remove: "Ready to merge"
label-category:
name: "Category Labels"
runs-on: ubuntu-latest
if: ${{ github.event.action == 'opened' || github.event.action == 'reopened' || github.event.action == 'synchronize' }}
steps:
# Checks out the repository to read files for matching with labeler config
- uses: actions/checkout@v6
# Applies labels based on the .github/labeler.yml config
- uses: actions/labeler@v6
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
label-size:
name: "Size Label"
runs-on: ubuntu-latest
if: ${{ github.event.action == 'opened' || github.event.action == 'reopened' || github.event.action == 'synchronize' }}
steps:
# Automatically adds size labels based on total changed lines
- name: Label by size
uses: pascalgn/size-label-action@v0.5.5
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
with:
sizes: >
{
"0": "small",
"50": "medium",
"250": "large"
}
label-by-date:
name: "Date label (Quarters)"
runs-on: ubuntu-latest
if: ${{ github.event.action == 'opened' || github.event.action == 'reopened' || github.event.action == 'synchronize' }}
steps:
# Determines the label (02, 05, 08, 11) based on PR creation month
- name: Determine quarter label
env:
PR_CREATED_AT: ${{ github.event.pull_request.created_at }}
run: |
echo "PR created at: $PR_CREATED_AT"
# Extract the numeric month (e.g., 04 for April)
MONTH=$(date -d "$PR_CREATED_AT" +%m | sed 's/^0*//')
echo "Month extracted: $MONTH"
# Determine quarter-end label based on month
if [ "$MONTH" -le 2 ] || [ "$MONTH" -eq 12 ]; then
LABEL="02"
elif [ "$MONTH" -le 5 ]; then
LABEL="05"
elif [ "$MONTH" -le 8 ]; then
LABEL="08"
else
LABEL="11"
fi
# Set as environment variable for next step
echo "LABEL=${LABEL}" >> $GITHUB_ENV
# Adds the quarter label to the PR
- name: Add quarter label
uses: PauMAVA/add-remove-label-action@v1.0.3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
add: "${{ env.LABEL }}"