ci(workflows): add AI release notes with fallback
Multi-Platform CI / test-platforms (ubuntu-22.04) (push) Successful in 19s
Multi-Platform CI / test-platforms (windows-latest) (push) Successful in 18s
Multi-Platform CI / Package for Linux x86_64 (push) Successful in 1m13s
Multi-Platform CI / Package for Windows x86_64 (push) Successful in 1m14s
Multi-Platform CI / Create GitHub Release (push) Successful in 18s

- add OPENAI_API_KEY env to release notes step
- attempt AI generation via OpenAI API using git log context
- write release_notes.md on success, otherwise fall back to simple notes
- handle missing API key or API errors gracefully
- update logging to print final release notes without blocking release
This commit is contained in:
2025-09-24 00:19:19 -07:00
parent 8a4d4b1b75
commit cde8b70bd3
+43 -3
View File
@@ -84,6 +84,8 @@ jobs:
echo "Last tag/commit: $LAST_TAG"
- name: Generate release notes
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
run: |
# Get git log since last release
if [ -n "${{ steps.last_tag.outputs.last_tag }}" ]; then
@@ -92,8 +94,32 @@ jobs:
GIT_LOG=$(git log --pretty=format:"- %s (%an)" HEAD~10..HEAD)
fi
# Generate simple release notes
cat > release_notes.md << EOF
# Try to generate AI-powered release notes
if [ -n "$OPENAI_API_KEY" ]; then
echo "Generating AI release notes..."
PROMPT="Generate professional release notes for version ${{ steps.version.outputs.version }} based on these git commits. Focus on user-facing changes and improvements. Use markdown formatting with sections like ## What's New, ## Improvements, ## Bug Fixes. Keep it concise and under 500 words.
Commits:
$GIT_LOG"
RESPONSE=$(curl -s -X POST "https://api.openai.com/v1/responses" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d "{
\"model\": \"gpt-5\",
\"input\": $(echo "$PROMPT" | jq -Rs .)
}")
# Check if the API call was successful and extract the response
if echo "$RESPONSE" | jq -e '.choices[0].text' > /dev/null 2>&1; then
echo "$RESPONSE" | jq -r '.choices[0].text' > release_notes.md
echo "Generated AI release notes successfully"
else
echo "AI generation failed, falling back to simple notes"
echo "API Response: $RESPONSE"
# Fallback to simple notes
cat > release_notes.md << EOF
## Release ${{ steps.version.outputs.version }}
### Changes
@@ -102,8 +128,22 @@ jobs:
---
*Generated automatically from commit history*
EOF
fi
else
echo "No OpenAI API key provided, generating simple release notes"
# Fallback to simple notes
cat > release_notes.md << EOF
## Release ${{ steps.version.outputs.version }}
echo "Generated release notes:"
### Changes
$GIT_LOG
---
*Generated automatically from commit history*
EOF
fi
echo "Final release notes:"
cat release_notes.md
- name: Prepare release assets