eslint-plugin-vanilla-extract/.github/workflows/create-releases.yml
Ante Budimir d2b62d3995 chore 🔧: improve GitHub Actions workflow for release creation
- Fix workflow triggers to support both manual runs and tag pushes
- Add conditional logic to handle different event types
- Skip already existing releases to prevent errors
- Add completion messages for better feedback
- Improve error handling for the release creation process
2025-03-10 13:34:18 +02:00

65 lines
2.2 KiB
YAML

name: Create Releases from Tags
on:
workflow_dispatch:
push:
tags:
- 'v*'
jobs:
create-releases:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Create Releases from Tags
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
if [[ "${{ github.event_name }}" == "push" && "${{ github.ref_type }}" == "tag" ]]; then
# For tag push events, only create release for the pushed tag
TAG="${{ github.ref_name }}"
VERSION=${TAG#v} # Remove 'v' prefix
# Extract changelog entry for this version
BODY=$(sed -n "/## \[$VERSION\]/,/## \[/p" CHANGELOG.md | sed '$d')
# Create GitHub release
gh release create $TAG \
--title "Release $TAG" \
--notes "$BODY" \
--repo ${{ github.repository }}
echo "✅ Successfully created release for $TAG"
else
# For manual workflow runs, check each tag
# Get all tags sorted by version
TAGS=$(git tag -l | sort -V)
for TAG in $TAGS; do
VERSION=${TAG#v} # Remove 'v' prefix
# Check if release already exists
if ! gh release view $TAG --repo ${{ github.repository }} &>/dev/null; then
# Extract changelog entry for this version
BODY=$(sed -n "/## \[$VERSION\]/,/## \[/p" CHANGELOG.md | sed '$d')
# Create GitHub release
gh release create $TAG \
--title "Release $TAG" \
--notes "$BODY" \
--repo ${{ github.repository }}
echo "Created release for $TAG"
else
echo "Release for $TAG already exists, skipping"
fi
done
echo "🎉 Workflow completed successfully! All releases have been processed."
fi
- name: Completion Message
run: echo "🚀 Release creation process has finished!"