Skip to content

Commit 12f645f

Browse files
committed
Fake merge commit (#5134)
1 parent aa25b2d commit 12f645f

2 files changed

Lines changed: 152 additions & 8 deletions

File tree

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
# Script to extract Jira issue from PR title and body with priority order:
5+
# 1. Title
6+
# 2. ticket:<url> pattern
7+
# 3. Anywhere in description
8+
9+
# Usage:
10+
# ./extract-jira-issue.sh <pr_number>
11+
# or
12+
# PR_TITLE="..." PR_BODY="..." ./extract-jira-issue.sh
13+
14+
extract_jira_issue() {
15+
local PR_TITLE="$1"
16+
local PR_BODY="$2"
17+
18+
echo "PR Title: $PR_TITLE"
19+
echo "PR Body:"
20+
echo "$PR_BODY"
21+
echo "---"
22+
23+
local JIRA_ISSUE=""
24+
local FOUND_AT=""
25+
26+
# Priority 1: Check title for WPB-* pattern
27+
echo "Checking PR title for Jira issues..."
28+
local TITLE_ISSUES
29+
TITLE_ISSUES=$(echo "$PR_TITLE" | grep -oE '\[?WPB-[0-9]+\]?' | tr -d '[]' | sort -u || true)
30+
local TITLE_COUNT
31+
if [ -z "$TITLE_ISSUES" ]; then
32+
TITLE_COUNT=0
33+
else
34+
TITLE_COUNT=$(echo -n "$TITLE_ISSUES" | grep -c '^')
35+
fi
36+
37+
if [ "$TITLE_COUNT" -gt 1 ]; then
38+
echo "ERROR: Multiple Jira issues found in title (ambiguous):"
39+
echo "$TITLE_ISSUES"
40+
exit 1
41+
elif [ "$TITLE_COUNT" -eq 1 ]; then
42+
JIRA_ISSUE="$TITLE_ISSUES"
43+
FOUND_AT="title"
44+
echo "Found Jira issue in title: $JIRA_ISSUE"
45+
else
46+
# Priority 2: Check for ticket:<url> or bare Jira URL pattern with WPB-* (case-insensitive)
47+
echo "No issue in title, checking for ticket URL patterns..."
48+
local TICKET_ISSUES
49+
# Match both: ticket:<url> or https://.../browse/WPB-* or .../WPB-*
50+
TICKET_ISSUES=$(echo "$PR_BODY" | grep -ioE '(ticket:|https?://[^ ]*/browse/)WPB-[0-9]+' | grep -ioE 'WPB-[0-9]+' | sort -u || true)
51+
local TICKET_COUNT
52+
TICKET_COUNT=$(echo -n "$TICKET_ISSUES" | grep -c '^' || echo 0)
53+
# Handle empty string case
54+
if [ -z "$TICKET_ISSUES" ]; then
55+
TICKET_COUNT=0
56+
fi
57+
58+
if [ "$TICKET_COUNT" -gt 1 ]; then
59+
echo "ERROR: Multiple Jira issues found in ticket URLs (ambiguous):"
60+
echo "$TICKET_ISSUES"
61+
exit 1
62+
elif [ "$TICKET_COUNT" -eq 1 ]; then
63+
JIRA_ISSUE="$TICKET_ISSUES"
64+
FOUND_AT="ticket URL"
65+
echo "Found Jira issue in ticket URL: $JIRA_ISSUE"
66+
else
67+
# Priority 3: Check anywhere in description for WPB-*
68+
echo "No ticket URL found, checking entire description..."
69+
local DESC_ISSUES
70+
DESC_ISSUES=$(echo "$PR_BODY" | grep -oE '\[?WPB-[0-9]+\]?' | tr -d '[]' | sort -u || true)
71+
local DESC_COUNT
72+
if [ -z "$DESC_ISSUES" ]; then
73+
DESC_COUNT=0
74+
else
75+
DESC_COUNT=$(echo -n "$DESC_ISSUES" | grep -c '^')
76+
fi
77+
78+
if [ "$DESC_COUNT" -gt 1 ]; then
79+
echo "ERROR: Multiple Jira issues found in description (ambiguous):"
80+
echo "$DESC_ISSUES"
81+
exit 1
82+
elif [ "$DESC_COUNT" -eq 1 ]; then
83+
JIRA_ISSUE="$DESC_ISSUES"
84+
FOUND_AT="description"
85+
echo "Found Jira issue in description: $JIRA_ISSUE"
86+
fi
87+
fi
88+
fi
89+
90+
if [ -z "$JIRA_ISSUE" ]; then
91+
echo "No Jira issue found"
92+
return 1
93+
else
94+
echo "========================================="
95+
echo "Final Jira issue: $JIRA_ISSUE (found in $FOUND_AT)"
96+
echo "========================================="
97+
# Output in format that can be easily parsed
98+
echo "JIRA_ISSUE=$JIRA_ISSUE"
99+
echo "FOUND_AT=$FOUND_AT"
100+
return 0
101+
fi
102+
}
103+
104+
# Main script logic
105+
if [ $# -eq 1 ]; then
106+
# PR number provided, fetch from GitHub
107+
PR_NUMBER="$1"
108+
if ! command -v gh &> /dev/null; then
109+
echo "ERROR: gh CLI is not installed. Please install it or provide PR_TITLE and PR_BODY environment variables."
110+
exit 1
111+
fi
112+
113+
echo "Fetching PR #$PR_NUMBER..."
114+
PR_DATA=$(gh pr view "$PR_NUMBER" --json title,body)
115+
PR_TITLE=$(echo "$PR_DATA" | jq -r '.title')
116+
PR_BODY=$(echo "$PR_DATA" | jq -r '.body // ""')
117+
118+
extract_jira_issue "$PR_TITLE" "$PR_BODY"
119+
elif [ -n "${PR_TITLE:-}" ] && [ -n "${PR_BODY:-}" ]; then
120+
# Environment variables provided
121+
extract_jira_issue "$PR_TITLE" "$PR_BODY"
122+
else
123+
echo "Usage:"
124+
echo " $0 <pr_number> # Fetch PR from GitHub"
125+
echo " PR_TITLE=\"...\" PR_BODY=\"...\" $0 # Use environment variables"
126+
echo ""
127+
echo "Examples:"
128+
echo " $0 5134"
129+
echo " PR_TITLE=\"WPB-12345 Fix bug\" PR_BODY=\"Some description\" $0"
130+
exit 1
131+
fi

.github/workflows/jira-fix-version.yaml

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,12 @@ jobs:
8282
8383
# Priority 1: Check title for WPB-* pattern
8484
echo "Checking PR title for Jira issues..."
85-
TITLE_ISSUES=$(echo "$PR_TITLE" | grep -oE '\[?WPB-[0-9]+\]?' | tr -d '[]' | sort -u)
86-
TITLE_COUNT=$(echo "$TITLE_ISSUES" | grep -c '^' || echo 0)
85+
TITLE_ISSUES=$(echo "$PR_TITLE" | grep -oE '\[?WPB-[0-9]+\]?' | tr -d '[]' | sort -u || true)
86+
if [ -z "$TITLE_ISSUES" ]; then
87+
TITLE_COUNT=0
88+
else
89+
TITLE_COUNT=$(echo -n "$TITLE_ISSUES" | grep -c '^')
90+
fi
8791
8892
if [ "$TITLE_COUNT" -gt 1 ]; then
8993
echo "ERROR: Multiple Jira issues found in title (ambiguous):"
@@ -94,10 +98,15 @@ jobs:
9498
FOUND_AT="title"
9599
echo "Found Jira issue in title: $JIRA_ISSUE"
96100
else
97-
# Priority 2: Check for ticket:<url> pattern with WPB-* in URL
98-
echo "No issue in title, checking for ticket:<url> pattern..."
99-
TICKET_ISSUES=$(echo "$PR_BODY" | grep -ioE 'ticket:[^ ]*WPB-[0-9]+[^ ]*' | grep -ioE 'WPB-[0-9]+' | sort -u)
100-
TICKET_COUNT=$(echo "$TICKET_ISSUES" | grep -c '^' || echo 0)
101+
# Priority 2: Check for ticket:<url> or bare Jira URL pattern with WPB-* (case-insensitive)
102+
echo "No issue in title, checking for ticket URL patterns..."
103+
# Match both: ticket:<url> or https://.../browse/WPB-* or .../WPB-*
104+
TICKET_ISSUES=$(echo "$PR_BODY" | grep -ioE '(ticket:|https?://[^ ]*/browse/)WPB-[0-9]+' | grep -ioE 'WPB-[0-9]+' | sort -u || true)
105+
if [ -z "$TICKET_ISSUES" ]; then
106+
TICKET_COUNT=0
107+
else
108+
TICKET_COUNT=$(echo -n "$TICKET_ISSUES" | grep -c '^')
109+
fi
101110
102111
if [ "$TICKET_COUNT" -gt 1 ]; then
103112
echo "ERROR: Multiple Jira issues found in ticket URLs (ambiguous):"
@@ -110,8 +119,12 @@ jobs:
110119
else
111120
# Priority 3: Check anywhere in description for WPB-*
112121
echo "No ticket URL found, checking entire description..."
113-
DESC_ISSUES=$(echo "$PR_BODY" | grep -oE '\[?WPB-[0-9]+\]?' | tr -d '[]' | sort -u)
114-
DESC_COUNT=$(echo "$DESC_ISSUES" | grep -c '^' || echo 0)
122+
DESC_ISSUES=$(echo "$PR_BODY" | grep -oE '\[?WPB-[0-9]+\]?' | tr -d '[]' | sort -u || true)
123+
if [ -z "$DESC_ISSUES" ]; then
124+
DESC_COUNT=0
125+
else
126+
DESC_COUNT=$(echo -n "$DESC_ISSUES" | grep -c '^')
127+
fi
115128
116129
if [ "$DESC_COUNT" -gt 1 ]; then
117130
echo "ERROR: Multiple Jira issues found in description (ambiguous):"

0 commit comments

Comments
 (0)