diff --git a/.github/workflows/pr-validator.yml b/.github/workflows/pr-validator.yml index 283350f..f759c23 100644 --- a/.github/workflows/pr-validator.yml +++ b/.github/workflows/pr-validator.yml @@ -1,7 +1,7 @@ name: "PR Title and Description Check" on: pull_request: - types: [opened, edited] + types: [opened, edited, synchronize] jobs: check-title-and-description: @@ -14,25 +14,23 @@ jobs: script: | const payload = context.payload; const prTitle = payload.pull_request.title; - const prDescription = payload.pull_request.body; // The pattern for JIRA ticket format - const jiraPattern = /\b[A-Z]+-\d+\b|breakglass/gi; + // Must be at the beginning of the PR title + // Prefix must be at least 3 uppercase letters + // Excludes tickets with only zeros after the prefix (e.g., XXX-000, XXX-0000) + // Number must be 3 to 6 digits + const jiraPattern = /^[A-Z]{3,}-(?!0+\b)\d{3,6}\b/; // Check PR title const hasJiraTitle = jiraPattern.test(prTitle); console.log(`PR title: ${hasJiraTitle ? 'Valid' : 'Invalid'}`); - // Check PR description - const hasJiraDescription = prDescription ? prDescription.match(jiraPattern) : false; - console.log(`PR description: ${hasJiraDescription ? 'Valid' : 'Invalid'}`); - - if (hasJiraTitle || hasJiraDescription) { - console.log('PR title or description format is correct.'); + if (hasJiraTitle) { + console.log('PR title format is correct.'); } else { - const errorMessage = []; - errorMessage.push('The PR title and description do not include a valid JIRA ticket!'); - console.log(errorMessage.join('\n')); + const errorMessage = 'The PR title must start with a valid JIRA ticket with 3-6 digits (e.g., ABC-123, DATAPLATFORM-12345). The ticket must be at the start, use at least 3 uppercase letters, and the number must not be all zeros.'; + console.log(errorMessage); - core.setFailed(errorMessage.join('\n')); + core.setFailed(errorMessage); }