RDK-58925: [RDK-E] Refactor RDK Firmware Upgrader to Run as a Daemon with D-Bus API Handlin #180
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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." |