name: Label Pending Release on: pull_request: types: [opened, reopened] branches: [dev] jobs: label: runs-on: ubuntu-latest permissions: issues: write steps: - name: Label linked issues as pending-release env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} PR_TITLE: ${{ github.event.pull_request.title }} PR_BODY: ${{ github.event.pull_request.body }} run: | # Extract issue numbers from PR title and body (passed via env vars for safety) # Using env vars prevents shell injection from backticks in markdown PR_TEXT="$PR_TITLE $PR_BODY" ISSUES=$(echo "$PR_TEXT" | grep -oE "(Fixes|Closes|Resolves|Refs?) #[0-9]+" | grep -oE "#[0-9]+" | sort -u || true) if [[ -z "$ISSUES" ]]; then echo "No linked issues found in PR" exit 0 fi for ISSUE in $ISSUES; do NUM=${ISSUE#\#} echo "Labeling issue #$NUM as pending-release" # Create label if doesn't exist gh label create "pending-release" \ --color "fbca04" \ --description "Fix in review, awaiting merge" \ --repo ${{ github.repository }} 2>/dev/null || true # Add label to issue gh issue edit $NUM --add-label "pending-release" --repo ${{ github.repository }} || true done