AI-Infra-Guard / .github /workflows /create-release.yml
AbdulElahGwaith's picture
Upload folder using huggingface_hub
ffb6330 verified
name: πŸš€ Create Release
on:
push:
tags:
- v*
env:
RELEASE_NAME: AI-Infra-Guard
jobs:
create-release:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: πŸ›’ Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: πŸ“ Extract latest CHANGELOG entry
id: tag-message
run: |
# Get tag information
TAG_NAME=${GITHUB_REF#refs/tags/}
echo "tag_name=$TAG_NAME" >> $GITHUB_OUTPUT
# Extract latest version content from CHANGELOG.md
if [ -f "CHANGELOG.md" ]; then
CHANGELOG_CONTENT=$(awk 'BEGIN {print_section=0;} /^## \[/ {if (print_section == 0) {print_section=1;} else {exit;}} print_section {print;}' CHANGELOG.md)
# If content is successfully extracted, use CHANGELOG content
if [ -n "$CHANGELOG_CONTENT" ]; then
echo "Extracting latest version content from CHANGELOG.md:"
echo "$CHANGELOG_CONTENT"
echo "$CHANGELOG_CONTENT" > tag_message.txt
else
echo "Version information not found in CHANGELOG.md, using default message"
echo "Release $TAG_NAME" > tag_message.txt
fi
else
echo "CHANGELOG.md file not found, using default message"
echo "Release $TAG_NAME" > tag_message.txt
fi
echo "tag_message_file=tag_message.txt" >> $GITHUB_OUTPUT
- name: πŸ“¦ Prepare release package
run: |
# Create release directory
mkdir -p release-package
# Copy necessary files
cp docker-compose.images.yml release-package/docker-compose.yml
cp -r data release-package/data
cp README.md release-package/README.md
cp README_ZH.md release-package/README_ZH.md
cp LICENSE release-package/LICENSE
cp CHANGELOG.md release-package/CHANGELOG.md
mkdir -p release-package/db
mkdir -p release-package/log
mkdir -p release-package/uploads
# Get version number and modify docker-compose.images.yml
VERSION="${{ steps.tag-message.outputs.tag_name }}"
# Replace latest tag in docker-compose.images.yml with current version
sed -i "s/:latest/:${VERSION}/g" release-package/docker-compose.yml
- name: πŸ“¦ Create release archive
run: |
# Create compressed package
cd release-package
tar -czf ../AI-Infra-Guard-${{ steps.tag-message.outputs.tag_name }}.tar.gz .
cd ..
# Create ZIP package (Windows-friendly)
cd release-package
zip -r ../AI-Infra-Guard-${{ steps.tag-message.outputs.tag_name }}.zip .
cd ..
- name: 🏷️ Create Release
uses: softprops/action-gh-release@v1
with:
name: ${{ env.RELEASE_NAME }} ${{ steps.tag-message.outputs.tag_name }}
body_path: ${{ steps.tag-message.outputs.tag_message_file }}
draft: false
prerelease: false
files: |
AI-Infra-Guard-${{ steps.tag-message.outputs.tag_name }}.tar.gz
AI-Infra-Guard-${{ steps.tag-message.outputs.tag_name }}.zip
token: ${{ secrets.GITHUB_TOKEN }}
- name: πŸ“Š Release Summary
run: |
echo "πŸŽ‰ Release created successfully!"
echo "πŸ“¦ Release: ${{ env.RELEASE_NAME }} ${{ steps.tag-message.outputs.tag_name }}"
echo "πŸ“ Assets:"
echo " - AI-Infra-Guard-${{ steps.tag-message.outputs.tag_name }}.tar.gz"
echo " - AI-Infra-Guard-${{ steps.tag-message.outputs.tag_name }}.zip"
echo "πŸ”— Release URL: ${{ github.server_url }}/${{ github.repository }}/releases/tag/${{ steps.tag-message.outputs.tag_name }}"