Restore simple workflow: Claude passes release notes directly
Back to the working pattern: - Claude generates release notes - Passes them directly to workflow via workflow_dispatch input - No tag annotation reading complexity - Simple: gh workflow run -f version=X.Y.Z -f release_notes="..." This is what you wanted and what actually works reliably.
This commit is contained in:
parent
00da544541
commit
37c53a9d5f
1 changed files with 10 additions and 31 deletions
41
.github/workflows/release.yml
vendored
41
.github/workflows/release.yml
vendored
|
|
@ -7,6 +7,10 @@ on:
|
||||||
description: 'Version number (e.g., 4.30.0)'
|
description: 'Version number (e.g., 4.30.0)'
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
|
release_notes:
|
||||||
|
description: 'Release notes (markdown) - generated by Claude'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
extract-version:
|
extract-version:
|
||||||
|
|
@ -32,8 +36,6 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
|
||||||
fetch-depth: 0 # Need full history to check tags
|
|
||||||
|
|
||||||
- name: Ensure VERSION file matches requested version
|
- name: Ensure VERSION file matches requested version
|
||||||
run: |
|
run: |
|
||||||
|
|
@ -46,18 +48,6 @@ jobs:
|
||||||
fi
|
fi
|
||||||
echo "✓ VERSION file matches requested version ($REQUESTED_VERSION)"
|
echo "✓ VERSION file matches requested version ($REQUESTED_VERSION)"
|
||||||
|
|
||||||
- name: Check if tag already exists
|
|
||||||
run: |
|
|
||||||
TAG="${{ needs.extract-version.outputs.tag }}"
|
|
||||||
if git rev-parse "$TAG" >/dev/null 2>&1; then
|
|
||||||
echo "✓ Tag $TAG already exists (will use existing tag annotation)"
|
|
||||||
else
|
|
||||||
echo "::error::Tag $TAG does not exist. Please create an annotated tag with release notes first:"
|
|
||||||
echo "::error:: git tag -a $TAG -F /tmp/release_notes_${{ needs.extract-version.outputs.version }}.md"
|
|
||||||
echo "::error:: git push origin $TAG"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
preflight-tests:
|
preflight-tests:
|
||||||
needs: version-guard
|
needs: version-guard
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
@ -321,29 +311,18 @@ jobs:
|
||||||
echo "Building release ${{ needs.extract-version.outputs.tag }}..."
|
echo "Building release ${{ needs.extract-version.outputs.tag }}..."
|
||||||
./scripts/build-release.sh ${{ needs.extract-version.outputs.version }}
|
./scripts/build-release.sh ${{ needs.extract-version.outputs.version }}
|
||||||
|
|
||||||
- name: Extract release notes from tag annotation
|
- name: Prepare release notes
|
||||||
id: generate_notes
|
id: generate_notes
|
||||||
|
env:
|
||||||
|
RELEASE_NOTES_INPUT: ${{ inputs.release_notes }}
|
||||||
run: |
|
run: |
|
||||||
TAG="${{ needs.extract-version.outputs.tag }}"
|
|
||||||
VERSION="${{ needs.extract-version.outputs.version }}"
|
VERSION="${{ needs.extract-version.outputs.version }}"
|
||||||
|
|
||||||
echo "Reading release notes from tag annotation..."
|
echo "Using Claude-generated release notes from workflow input"
|
||||||
|
|
||||||
# Check if tag has an annotation (release notes from Claude)
|
# Save release notes to file
|
||||||
TAG_MESSAGE=$(git tag -l --format='%(contents)' "${TAG}")
|
|
||||||
|
|
||||||
if [ -z "$TAG_MESSAGE" ] || [ "$TAG_MESSAGE" = "" ]; then
|
|
||||||
echo "::error::Tag ${TAG} has no annotation. Release notes must be provided by Claude."
|
|
||||||
echo "::error::Tags must be created with: git tag -a ${TAG} -F /tmp/release_notes_${VERSION}.md"
|
|
||||||
echo "::error::This ensures Claude writes user-focused, semantic changelog instead of raw commits."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "✓ Found release notes in tag annotation"
|
|
||||||
|
|
||||||
# Save tag annotation to file
|
|
||||||
NOTES_FILE=$(mktemp)
|
NOTES_FILE=$(mktemp)
|
||||||
echo "$TAG_MESSAGE" > "$NOTES_FILE"
|
printf "%s\n" "$RELEASE_NOTES_INPUT" > "$NOTES_FILE"
|
||||||
|
|
||||||
# Add installation instructions
|
# Add installation instructions
|
||||||
cat >> "$NOTES_FILE" << EOF
|
cat >> "$NOTES_FILE" << EOF
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue