Skip to content

Commit e9e367c

Browse files
committed
Add manual workflow dispatch trigger and improve PR version detection with GitHub API
1 parent bc583b5 commit e9e367c

1 file changed

Lines changed: 40 additions & 18 deletions

File tree

.github/workflows/postgresql-test.yml

Lines changed: 40 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ on:
66
- main
77
- develop
88
types: [opened, synchronize, reopened, edited]
9+
workflow_dispatch:
10+
inputs:
11+
version:
12+
description: 'Specific PostgreSQL version to test (e.g., 16.9, 17.5) - leave empty to test latest 5'
13+
required: false
14+
type: string
915

1016
jobs:
1117
detect-versions:
@@ -42,6 +48,8 @@ jobs:
4248
4349
- name: Get PostgreSQL Versions
4450
id: get-versions
51+
env:
52+
GH_TOKEN: ${{ github.token }}
4553
run: |
4654
if [ "${{ github.event.inputs.version }}" != "" ]; then
4755
# Manual workflow with specific version
@@ -50,41 +58,55 @@ jobs:
5058
VERSIONS="[\"$VERSION\"]"
5159
elif [ "${{ github.event_name }}" == "pull_request" ]; then
5260
# For PRs, detect which versions were added or modified
53-
echo "Detecting versions changed in this PR..."
54-
echo "Base ref: ${{ github.base_ref }}"
55-
echo "Head ref: ${{ github.head_ref }}"
61+
echo "Detecting versions changed in PR #${{ github.event.pull_request.number }}"
5662
57-
# Get changed lines in releases.properties using GitHub's merge base
58-
CHANGED_VERSIONS=$(git diff ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }} -- releases.properties 2>/dev/null | \
59-
grep "^+" | \
60-
grep -v "^+++" | \
61-
grep -E "^\\+[0-9]+\\.[0-9]+" | \
62-
sed 's/^+//' | \
63-
cut -d'=' -f1 | \
64-
tr -d ' ' | \
65-
grep -v -E "(RC|beta|alpha)" || true)
63+
# Get the diff from GitHub API
64+
DIFF=$(gh api repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/files \
65+
--jq '.[] | select(.filename == "releases.properties") | .patch' 2>/dev/null || echo "")
6666
67-
if [ -z "$CHANGED_VERSIONS" ]; then
68-
echo "No version changes detected in releases.properties"
67+
if [ -z "$DIFF" ]; then
68+
echo "No changes to releases.properties detected"
6969
echo "Testing latest 5 stable versions as fallback"
7070
VERSIONS=$(grep -E "^[0-9]+\.[0-9]+" releases.properties | \
7171
grep -v -E "(RC|beta|alpha)" | \
7272
cut -d'=' -f1 | \
7373
tr -d ' ' | \
7474
jq -R -s -c 'split("\n") | map(select(length > 0)) | unique | sort_by(split(".") | map(tonumber)) | reverse | .[0:5]')
7575
else
76-
echo "Changed versions detected:"
77-
echo "$CHANGED_VERSIONS"
78-
VERSIONS=$(echo "$CHANGED_VERSIONS" | jq -R -s -c 'split("\n") | map(select(length > 0)) | unique')
76+
echo "Analyzing diff for added/modified versions..."
77+
78+
# Extract added lines (lines starting with +) that contain version numbers
79+
CHANGED_VERSIONS=$(echo "$DIFF" | \
80+
grep "^+" | \
81+
grep -v "^+++" | \
82+
grep -E "^\+[0-9]+\.[0-9]+" | \
83+
sed 's/^+//' | \
84+
cut -d'=' -f1 | \
85+
tr -d ' ' | \
86+
grep -v -E "(RC|beta|alpha)" || echo "")
87+
88+
if [ -z "$CHANGED_VERSIONS" ]; then
89+
echo "No new stable versions found in PR"
90+
echo "Testing latest 5 stable versions as fallback"
91+
VERSIONS=$(grep -E "^[0-9]+\.[0-9]+" releases.properties | \
92+
grep -v -E "(RC|beta|alpha)" | \
93+
cut -d'=' -f1 | \
94+
tr -d ' ' | \
95+
jq -R -s -c 'split("\n") | map(select(length > 0)) | unique | sort_by(split(".") | map(tonumber)) | reverse | .[0:5]')
96+
else
97+
echo "Changed versions detected:"
98+
echo "$CHANGED_VERSIONS"
99+
VERSIONS=$(echo "$CHANGED_VERSIONS" | jq -R -s -c 'split("\n") | map(select(length > 0)) | unique')
100+
fi
79101
fi
80102
else
81103
# For other events, test latest 5 stable versions
104+
echo "Testing latest 5 stable versions (excluding RC/beta/alpha)"
82105
VERSIONS=$(grep -E "^[0-9]+\.[0-9]+" releases.properties | \
83106
grep -v -E "(RC|beta|alpha)" | \
84107
cut -d'=' -f1 | \
85108
tr -d ' ' | \
86109
jq -R -s -c 'split("\n") | map(select(length > 0)) | unique | sort_by(split(".") | map(tonumber)) | reverse | .[0:5]')
87-
echo "Testing latest 5 stable versions (excluding RC/beta/alpha)"
88110
fi
89111
90112
echo "versions=$VERSIONS" >> $GITHUB_OUTPUT

0 commit comments

Comments
 (0)