Skip to content

Commit b99171a

Browse files
author
CI/CD Tester
committed
fix: Improve changelog automation date filtering
- Replace unreliable --since parameter with manual date filtering - Add proper timestamp comparison for issue filtering - Improve logging for better debugging - Fetch more issues (limit 100) for better coverage - Add debug logging for issue processing Fixes changelog generation issues where closed issues after release date were not being detected properly.
1 parent 6cef737 commit b99171a

File tree

1 file changed

+29
-7
lines changed

1 file changed

+29
-7
lines changed

gh-release-manager.sh

100755100644
Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -279,19 +279,24 @@ get_closed_issues_since_last_release() {
279279

280280
local since_date="$1"
281281
local issues_json
282-
if [ -z "$since_date" ]; then
283-
log_info "get_closed_issues_since_last_release" "No since_date provided. Fetching all closed issues."
284-
issues_json=$(gh issue list --state closed --json number,title,url,labels 2>/dev/null)
285-
else
286-
issues_json=$(gh issue list --state closed --since "$since_date" --json number,title,url,labels 2>/dev/null)
287-
fi
282+
283+
# Always fetch all closed issues and filter manually for better reliability
284+
log_info "get_closed_issues_since_last_release" "Fetching all closed issues for filtering..."
285+
issues_json=$(gh issue list --state closed --json number,title,url,labels,closedAt --limit 100 2>/dev/null)
288286

289287
if [ -z "$issues_json" ] || [ "$issues_json" = "[]" ]; then
290-
log_info "get_closed_issues_since_last_release" "No closed issues found since $since_date."
288+
log_info "get_closed_issues_since_last_release" "No closed issues found."
291289
echo ""
292290
log_timing "get_closed_issues_since_last_release" "$start_time"
293291
return 0
294292
fi
293+
294+
# If no since_date provided, return all issues
295+
if [ -z "$since_date" ]; then
296+
log_info "get_closed_issues_since_last_release" "No since_date provided. Using all closed issues."
297+
else
298+
log_info "get_closed_issues_since_last_release" "Filtering issues closed after: $since_date"
299+
fi
295300

296301
local changelog_entries=""
297302
local issue_count=0
@@ -303,9 +308,25 @@ get_closed_issues_since_last_release() {
303308
title=$(echo "$issue" | jq -r '.title')
304309
local url
305310
url=$(echo "$issue" | jq -r '.url')
311+
local closed_at
312+
closed_at=$(echo "$issue" | jq -r '.closedAt')
306313
local labels
307314
labels=$(echo "$issue" | jq -r '.labels[].name' | paste -s -d, -)
308315

316+
# Filter by date if since_date is provided
317+
if [ -n "$since_date" ]; then
318+
# Convert dates to timestamps for comparison
319+
local since_timestamp
320+
since_timestamp=$(date -d "$since_date" +%s 2>/dev/null || echo "0")
321+
local closed_timestamp
322+
closed_timestamp=$(date -d "$closed_at" +%s 2>/dev/null || echo "0")
323+
324+
if [ "$closed_timestamp" -le "$since_timestamp" ]; then
325+
log_debug "get_closed_issues_since_last_release" "Skipping issue #$number (closed before $since_date)"
326+
continue
327+
fi
328+
fi
329+
309330
# Filter out issues with 'skip-changelog' label
310331
if [[ "$labels" == *"skip-changelog"* ]]; then
311332
log_debug "get_closed_issues_since_last_release" "Skipping issue #$number (\"$title\") due to 'skip-changelog' label."
@@ -314,6 +335,7 @@ get_closed_issues_since_last_release() {
314335

315336
changelog_entries+="- $title (#$number) [Link]($url)\n"
316337
issue_count=$((issue_count + 1))
338+
log_debug "get_closed_issues_since_last_release" "Added issue #$number to changelog: $title"
317339
done < <(echo "$issues_json" | jq -c '.[]')
318340

319341
log_info "get_closed_issues_since_last_release" "Found $issue_count issues for changelog."

0 commit comments

Comments
 (0)