update release workflow for DiscoReaper

This commit is contained in:
rambros 2026-03-04 16:08:04 +05:30
parent bb805c7cfe
commit 07fce69c51
5 changed files with 41 additions and 42 deletions

View file

@ -13,17 +13,17 @@ jobs:
os: [ubuntu-latest, windows-latest, macos-latest]
include:
- os: ubuntu-latest
artifact_name: server-shuttle-linux
asset_name: server-shuttle-linux.zip
executable_path: dist/server-shuttle
artifact_name: disco-reaper-linux
asset_name: disco-reaper-linux.zip
executable_path: dist/DiscoReaper
- os: windows-latest
artifact_name: server-shuttle-windows
asset_name: server-shuttle-windows.zip
executable_path: dist/server-shuttle.exe
artifact_name: disco-reaper-windows
asset_name: disco-reaper-windows.zip
executable_path: dist/DiscoReaper.exe
- os: macos-latest
artifact_name: server-shuttle-macos
asset_name: server-shuttle-macos.zip
executable_path: dist/server-shuttle
artifact_name: disco-reaper-macos
asset_name: disco-reaper-macos.zip
executable_path: dist/DiscoReaper
steps:
- name: Checkout code
@ -45,27 +45,27 @@ jobs:
shell: python
run: |
from PIL import Image
img = Image.open('server-shuttle-icon.png')
img.save('server-shuttle-icon.ico', format='ICO', sizes=[(256, 256)])
img = Image.open('disco-reaper-icon.png')
img.save('disco-reaper-icon.ico', format='ICO', sizes=[(256, 256)])
- name: Build with PyInstaller
run: |
echo "Listing directory contents:"
ls -R || dir /s
pyinstaller server-shuttle.spec
pyinstaller disco-reaper.spec
- name: Prepare Release Asset (Linux/MacOS)
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest'
run: |
cp ${{ matrix.executable_path }} server-shuttle
chmod +x server-shuttle
zip ${{ matrix.asset_name }} server-shuttle
cp ${{ matrix.executable_path }} DiscoReaper
chmod +x DiscoReaper
zip ${{ matrix.asset_name }} DiscoReaper
- name: Prepare Release Asset (Windows)
if: matrix.os == 'windows-latest'
run: |
copy ${{ matrix.executable_path }} server-shuttle.exe
powershell Compress-Archive -Path "server-shuttle.exe" -DestinationPath "${{ matrix.asset_name }}"
copy ${{ matrix.executable_path }} DiscoReaper.exe
powershell Compress-Archive -Path "DiscoReaper.exe" -DestinationPath "${{ matrix.asset_name }}"
- name: Upload Artifact
uses: actions/upload-artifact@v4
@ -88,8 +88,8 @@ jobs:
uses: softprops/action-gh-release@v2
with:
files: |
artifacts/server-shuttle-linux/server-shuttle-linux.zip
artifacts/server-shuttle-windows/server-shuttle-windows.zip
artifacts/server-shuttle-macos/server-shuttle-macos.zip
artifacts/disco-reaper-linux/disco-reaper-linux.zip
artifacts/disco-reaper-windows/disco-reaper-windows.zip
artifacts/disco-reaper-macos/disco-reaper-macos.zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View file

@ -3,7 +3,7 @@
# Exit on error
set -e
echo "--- Server Shuttle Cross-Distro Build Script ---"
echo "--- Disco-Reaper Cross-Distro Build Script ---"
echo "NOTE: For maximum compatibility (glibc), run this on your oldest target Linux distribution."
# Check for venv
@ -38,32 +38,31 @@ echo "Cleaning previous build artifacts..."
rm -rf build/ dist/
echo "Starting PyInstaller build..."
pyinstaller --clean server-shuttle.spec
pyinstaller --clean disco-reaper.spec
echo "Generating Launch-Shuttle.sh launcher..."
cat << 'EOF' > dist/Launch-Shuttle.sh
echo "Generating Launch-Reaper.sh launcher..."
cat << 'EOF' > dist/Launch-Reaper.sh
#!/bin/bash
# Convenient launcher for Server Shuttle
# Convenient launcher for Disco-Reaper
# Ensures it runs in a terminal if possible, but the binary also has internal auto-terminal logic.
BASEDIR=$(dirname "$0")
cd "$BASEDIR"
if [ -f "./server-shuttle" ]; then
./server-shuttle
if [ -f "./DiscoReaper" ]; then
./DiscoReaper
else
echo "Error: server-shuttle binary not found in $(pwd)"
echo "Error: DiscoReaper binary not found in $(pwd)"
read -p "Press enter to exit..."
fi
EOF
chmod +x dist/Launch-Shuttle.sh
chmod +x dist/Launch-Reaper.sh
echo "Packaging release: server-shuttle-linux.zip..."
cp config.example.yaml dist/
echo "Packaging release: disco-reaper-linux.zip..."
cd dist
if command -v zip >/dev/null 2>&1; then
zip -q server-shuttle-linux.zip server-shuttle Launch-Shuttle.sh config.example.yaml
echo "Package created: dist/server-shuttle-linux.zip"
zip -q disco-reaper-linux.zip DiscoReaper Launch-Reaper.sh
echo "Package created: dist/disco-reaper-linux.zip"
else
echo "Warning: 'zip' command not found. Skipping zip creation."
echo "Files available in dist/ directory."
@ -72,7 +71,7 @@ cd ..
echo "-----------------------------------"
echo "Build complete!"
echo "Standalone executable: dist/server-shuttle"
echo "Launcher script: dist/Launch-Shuttle.sh"
echo "Release Package: dist/server-shuttle-linux.zip"
echo "Standalone executable: dist/DiscoReaper"
echo "Launcher script: dist/Launch-Reaper.sh"
echo "Release Package: dist/disco-reaper-linux.zip"
echo "---"

BIN
disco-reaper-icon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 KiB

View file

@ -13,15 +13,15 @@ hiddenimports += collect_submodules('rich._unicode_data')
# Determine the best icon to use
icon_file = None
if os.path.exists('server-shuttle-icon.ico'):
icon_file = 'server-shuttle-icon.ico'
elif os.path.exists('server-shuttle-icon.png'):
icon_file = 'server-shuttle-icon.png'
if os.path.exists('disco-reaper-icon.ico'):
icon_file = 'disco-reaper-icon.ico'
elif os.path.exists('disco-reaper-icon.png'):
icon_file = 'disco-reaper-icon.png'
print(f"DEBUG: Selected icon_file = {icon_file}")
a = Analysis(
['server-shuttle.py'],
['disco-reaper.py'],
pathex=[],
binaries=[],
datas=[],
@ -42,7 +42,7 @@ exe = EXE(
a.zipfiles,
a.datas,
[],
name='server-shuttle',
name='DiscoReaper',
debug=False,
bootloader_ignore_signals=False,
strip=False,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 KiB