@@ -104,18 +104,30 @@ runs:
104104 echo ""
105105 } >> "$body_file"
106106
107+ # Append auto-generated release notes via API (avoids --generate-notes flag compatibility issues)
108+ if [ "${{ inputs.generate_notes }}" = "true" ]; then
109+ generated=$(gh api "repos/$GITHUB_REPOSITORY/releases/generate-notes" \
110+ --method POST \
111+ --field tag_name="$tag" \
112+ --field target_commitish="$target" \
113+ --jq '.body' 2>&1) && api_ok=true || api_ok=false
114+ if [ "$api_ok" = "true" ] && [ -n "$generated" ]; then
115+ echo "$generated" >> "$body_file"
116+ elif [ "$api_ok" = "false" ]; then
117+ echo "::warning::Failed to generate release notes via API: $generated"
118+ else
119+ echo "::notice::Auto-generated release notes were empty; body will contain only the standard description."
120+ fi
121+ fi
122+
107123 # Check if a release with this tag already exists
108124 release_info=$(gh release view "$tag" --json isDraft 2>/dev/null || echo "")
109125
110126 if [ -n "$release_info" ]; then
111127 is_draft=$(echo "$release_info" | jq -r '.isDraft')
112128 if [ "$is_draft" = "true" ] && [ "${{ inputs.force_update }}" = "true" ]; then
113129 # Update existing draft release
114- edit_args=(release edit "$tag" --draft --title "$title" --target "$target" --notes-file "$body_file")
115- if [ "${{ inputs.generate_notes }}" = "true" ]; then
116- edit_args+=(--generate-notes)
117- fi
118- gh "${edit_args[@]}"
130+ gh release edit "$tag" --draft --title "$title" --target "$target" --notes-file "$body_file"
119131 echo "✓ Updated existing draft release for tag $tag"
120132 elif [ "$is_draft" != "true" ]; then
121133 echo "::error::Release for tag '$tag' already exists and is not a draft. Cannot update a published release."
@@ -125,12 +137,8 @@ runs:
125137 exit 1
126138 fi
127139 else
128- # Create new draft release; GitHub-generated notes will append after notes-file.
129- args=(release create "$tag" --draft --title "$title" --target "$target" --notes-file "$body_file")
130- if [ "${{ inputs.generate_notes }}" = "true" ]; then
131- args+=(--generate-notes)
132- fi
133- gh "${args[@]}"
140+ # Create new draft release
141+ gh release create "$tag" --draft --title "$title" --target "$target" --notes-file "$body_file"
134142 echo "✓ Draft release created for tag $tag"
135143 fi
136144
0 commit comments