Require release notes input for workflow
This commit is contained in:
parent
221c41b2b0
commit
1f3723a7ad
1 changed files with 7 additions and 51 deletions
58
.github/workflows/release.yml
vendored
58
.github/workflows/release.yml
vendored
|
|
@ -7,6 +7,10 @@ on:
|
||||||
description: 'Version number (e.g., 4.28.1)'
|
description: 'Version number (e.g., 4.28.1)'
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
|
release_notes:
|
||||||
|
description: 'Release notes content (markdown). Provide final user-facing changelog before running.'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
version_guard:
|
version_guard:
|
||||||
|
|
@ -301,68 +305,20 @@ jobs:
|
||||||
echo "Building release v${{ inputs.version }}..."
|
echo "Building release v${{ inputs.version }}..."
|
||||||
./scripts/build-release.sh ${{ inputs.version }}
|
./scripts/build-release.sh ${{ inputs.version }}
|
||||||
|
|
||||||
- name: Generate release notes
|
|
||||||
id: generate_notes
|
|
||||||
env:
|
|
||||||
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
||||||
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
||||||
run: |
|
|
||||||
echo "Generating release notes using LLM..."
|
|
||||||
|
|
||||||
# Find previous release tag (simply get the latest tag)
|
|
||||||
PREVIOUS_TAG=$(git tag --sort=-version:refname | head -1)
|
|
||||||
|
|
||||||
if [ -z "$PREVIOUS_TAG" ]; then
|
|
||||||
echo "No previous tag found, comparing with first commit"
|
|
||||||
PREVIOUS_TAG=$(git rev-list --max-parents=0 HEAD)
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Comparing v${{ inputs.version }} with ${PREVIOUS_TAG}..."
|
|
||||||
|
|
||||||
# Generate notes - script writes output between separator lines
|
|
||||||
TEMP_OUTPUT=$(mktemp)
|
|
||||||
|
|
||||||
# Run script, capture exit code (don't fail immediately)
|
|
||||||
set +e
|
|
||||||
./scripts/generate-release-notes.sh ${{ inputs.version }} "${PREVIOUS_TAG}" > "$TEMP_OUTPUT" 2>&1
|
|
||||||
SCRIPT_EXIT=$?
|
|
||||||
set -e
|
|
||||||
|
|
||||||
if [ $SCRIPT_EXIT -ne 0 ]; then
|
|
||||||
echo "❌ Release notes generation failed:"
|
|
||||||
cat "$TEMP_OUTPUT"
|
|
||||||
rm -f "$TEMP_OUTPUT"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Extract notes between separator lines (everything between the two ━━━ lines)
|
|
||||||
RELEASE_NOTES=$(awk '/^Generated release notes:/{flag=1;next}/^━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━$/{if(flag==1){flag=2}else if(flag==2){flag=3}}flag==2' "$TEMP_OUTPUT")
|
|
||||||
|
|
||||||
rm -f "$TEMP_OUTPUT"
|
|
||||||
|
|
||||||
# Save to output (escape for GitHub Actions multiline)
|
|
||||||
echo "RELEASE_NOTES<<EOF" >> $GITHUB_OUTPUT
|
|
||||||
echo "$RELEASE_NOTES" >> $GITHUB_OUTPUT
|
|
||||||
echo "EOF" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
echo "✅ Release notes generated successfully"
|
|
||||||
|
|
||||||
- name: Create draft release
|
- name: Create draft release
|
||||||
id: create_release
|
id: create_release
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ github.token }}
|
GH_TOKEN: ${{ github.token }}
|
||||||
|
RELEASE_NOTES_INPUT: ${{ inputs.release_notes }}
|
||||||
run: |
|
run: |
|
||||||
VERSION="${{ inputs.version }}"
|
VERSION="${{ inputs.version }}"
|
||||||
TAG="v${VERSION}"
|
TAG="v${VERSION}"
|
||||||
|
|
||||||
echo "Creating draft release for ${TAG}..."
|
echo "Creating draft release for ${TAG}..."
|
||||||
|
|
||||||
# Write release notes directly from GitHub output to file
|
# Write provided release notes to a temp file (keeps formatting)
|
||||||
# This avoids bash interpreting backticks in the markdown
|
|
||||||
NOTES_FILE=$(mktemp)
|
NOTES_FILE=$(mktemp)
|
||||||
cat <<'NOTES_EOF' > "$NOTES_FILE"
|
printf "%s\n" "$RELEASE_NOTES_INPUT" > "$NOTES_FILE"
|
||||||
${{ steps.generate_notes.outputs.RELEASE_NOTES }}
|
|
||||||
NOTES_EOF
|
|
||||||
|
|
||||||
# Create draft release with generated notes
|
# Create draft release with generated notes
|
||||||
# Use --target to specify commit so tag is created properly (not "untagged-...")
|
# Use --target to specify commit so tag is created properly (not "untagged-...")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue