Files
SPT-Server-Build/.github/workflows/release.yml
T
2026-05-30 03:54:13 -07:00

115 lines
4.1 KiB
YAML

name: Create GitHub Release on Version Change
on:
push:
branches: master
jobs:
check-version:
runs-on: ubuntu-latest
outputs:
new_version: ${{ steps.detect.outputs.new_version }}
should_release: ${{ steps.detect.outputs.should_release }}
previous_version: ${{ steps.detect.outputs.previous_version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0 # Fetch all history to check tags
- name: Read current VERSION
id: read_current
run: |
if [ ! -f VERSION ]; then
echo "Error: VERSION file missing"
exit 1
fi
CURRENT=$(cat VERSION | tr -d '[:space:]')
echo "current=$CURRENT" >> $GITHUB_OUTPUT
echo "Current version in file: $CURRENT"
- name: Find latest release tag
id: latest_tag
run: |
# Get the most recent tag that looks like a version (vX.Y.Z)
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
if [ -z "$LATEST_TAG" ]; then
echo "No previous tags found. This is the first release."
echo "previous=" >> $GITHUB_OUTPUT
echo "should_release=true" >> $GITHUB_OUTPUT
echo "new_version=${{ steps.read_current.outputs.current }}" >> $GITHUB_OUTPUT
else
# Strip the 'v' prefix if present for comparison
PREV_VERSION=${LATEST_TAG#v}
echo "previous=$PREV_VERSION" >> $GITHUB_OUTPUT
CURRENT=${{ steps.read_current.outputs.current }}
if [ "$CURRENT" == "$PREV_VERSION" ]; then
echo "Version unchanged ($CURRENT). Skipping release."
echo "should_release=false" >> $GITHUB_OUTPUT
echo "new_version=$CURRENT" >> $GITHUB_OUTPUT
else
echo "Version changed! $PREV_VERSION -> $CURRENT"
echo "should_release=true" >> $GITHUB_OUTPUT
echo "new_version=$CURRENT" >> $GITHUB_OUTPUT
fi
fi
create-release:
needs: check-version
if: needs.check-version.outputs.should_release == 'true'
runs-on: ubuntu-latest
permissions:
contents: write # Required to create releases and tags
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Prepare Release Artifacts
run: |
# Create a directory for the release
mkdir -p release-artifacts
# Copy relevant files to the artifact folder
# Adjust these paths based on what you want to release
cp -r . release-artifacts/
# Remove hidden files and .git folder to keep it clean
rm -rf release-artifacts/.git
rm -rf release-artifacts/.github
rm -rf release-artifacts/.gitignore
# Create a tarball
tar -czvf "SPT-Server-v${{ needs.check-version.outputs.new_version }}.tar.gz" -C release-artifacts .
# Create a zip file
zip -r "SPT-Server-v${{ needs.check-version.outputs.new_version }}.zip" release-artifacts/
- name: Create GitHub Release
uses: softprops/action-gh-release@v1
with:
tag_name: v${{ needs.check-version.outputs.new_version }}
name: Release v${{ needs.check-version.outputs.new_version }}
body: |
## 🚀 New Release: v${{ needs.check-version.outputs.new_version }}
Automated release triggered by an update to the `VERSION` file.
### 📦 Download
- [Download .tar.gz](#) (Link generated automatically)
- [Download .zip](#) (Link generated automatically)
### 📝 Changes
- Updated version to ${{ needs.check-version.outputs.new_version }}
- (Add manual notes here if needed)
files: |
SPT-Server-v${{ needs.check-version.outputs.new_version }}.tar.gz
SPT-Server-v${{ needs.check-version.outputs.new_version }}.zip
generate_release_notes: true
draft: false
prerelease: false