Skip to content

RDK-58925: [RDK-E] Refactor RDK Firmware Upgrader to Run as a Daemon with D-Bus API Handlin #180

RDK-58925: [RDK-E] Refactor RDK Firmware Upgrader to Run as a Daemon with D-Bus API Handlin

RDK-58925: [RDK-E] Refactor RDK Firmware Upgrader to Run as a Daemon with D-Bus API Handlin #180

name: PR Title Validation
on:
pull_request:
branches: [develop]
types: [opened, edited, synchronize]
jobs:
validate-pr-title:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Validate PR Title
env:
PR_TITLE: ${{ github.event.pull_request.title }}
PR_BODY: ${{ github.event.pull_request.body }}
run: |
# Define valid ticket IDs
VALID_TICKET_IDS=("RDKEMW" "RDKEVD" "IMMUI" "RDK")
# Function to validate ticket format and ID
validate_ticket() {
local text="$1"
local field_name="$2"
echo "Validating $field_name: $text"
# Check if text matches the pattern <TICKETID>-<ticketno.> : <desc>
if [[ ! "$text" =~ ^[A-Z0-9]+-[0-9]+[[:space:]]*:[[:space:]]*.+ ]]; then
echo "ERROR: $field_name format is invalid."
echo "Expected format: <TICKETID>-<ticketno.> : <description>"
echo "Example: RDKEMW-123 : Fix playbook issue"
echo ""
echo "Valid ticket IDs are:"
printf "%s\n" "${VALID_TICKET_IDS[@]}"
return 1
fi
# Extract ticket ID from the text
local ticket_prefix=$(echo "$text" | sed -n 's/^\([A-Z0-9]\+\)-[0-9]\+[[:space:]]*:.*$/\1/p')
if [ -z "$ticket_prefix" ]; then
echo "ERROR: Could not extract ticket ID from $field_name."
echo "Expected format: <TICKETID>-<ticketno.> : <description>"
echo ""
echo "Valid ticket IDs are:"
printf "%s\n" "${VALID_TICKET_IDS[@]}"
return 1
fi
# Check if extracted ticket ID is in the valid list
local valid=false
for valid_id in "${VALID_TICKET_IDS[@]}"; do
if [ "$ticket_prefix" = "$valid_id" ]; then
valid=true
break
fi
done
if [ "$valid" = false ]; then
echo "ERROR: Invalid ticket ID '$ticket_prefix' in $field_name"
echo ""
echo "Valid ticket IDs are:"
printf "%s\n" "${VALID_TICKET_IDS[@]}"
echo ""
echo "Your $field_name should start with one of the above ticket IDs followed by a number."
echo "Example: RDKEMW-123 : Fix playbook issue"
return 1
fi
echo "$field_name validation passed! Ticket ID: $ticket_prefix"
return 0
}
# Validate PR Title (always required)
echo "=== Validating PR Title ==="
if ! validate_ticket "$PR_TITLE" "PR title"; then
echo ""
echo "VALIDATION FAILED: PR title must contain a valid ticket ID from the approved list: ${VALID_TICKET_IDS[@]}"
exit 1
fi
echo ""
echo "=== PR Title Validation PASSED ==="
echo "Ticket ID found in PR title."
echo ""
echo "ALL VALIDATIONS PASSED! PR title contains a valid ticket ID."