|
|
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 |
|
|
|
|
|
|
|
|
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 [ -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 |
|
|
|
|
|
|
|
|
VERSION="${{ steps.tag-message.outputs.tag_name }}" |
|
|
|
|
|
|
|
|
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 .. |
|
|
|
|
|
|
|
|
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 }}" |
|
|
|