@@ -42,17 +42,63 @@ jobs:
4242 echo "Some dependencies failed, trying without cx_Oracle (optional)..."
4343 pip install PyQt6 PyQt6-Charts psycopg2-binary pymysql aiosqlite pymongo redis pyodbc clickhouse-driver influxdb-client boto3 google-api-python-client google-auth-httplib2 google-auth-oauthlib cryptography pynacl python-dotenv schedule paramiko pandas numpy matplotlib Pillow ldap3 pyotp qrcode azure-identity azure-mgmt-sql || echo "Dependency installation completed with some failures"
4444 }
45- pip install build
46- continue-on-error : true
45+ pip install build pyinstaller
4746
48- - name : Build package
47+ - name : Build Python package
4948 run : python -m build
5049
50+ - name : Build Windows executable
51+ if : matrix.os == 'windows-latest'
52+ run : |
53+ pyinstaller --clean --noconfirm --onefile --windowed --name "DB_Storage_Manager" --icon=NONE db_storage_manager/main.py || {
54+ pyinstaller --clean --noconfirm --onefile --name "DB_Storage_Manager" db_storage_manager/main.py || echo "Windows executable build attempted"
55+ }
56+ mkdir -p release
57+ if [ -f "dist/DB_Storage_Manager.exe" ]; then
58+ cp dist/DB_Storage_Manager.exe release/DB_Storage_Manager-v1.0.1.exe || echo "Windows executable copied"
59+ fi
60+ shell : bash
61+
62+ - name : Build macOS app bundle
63+ if : matrix.os == 'macos-latest'
64+ run : |
65+ pyinstaller --clean --noconfirm --windowed --name "DB Storage Manager" --osx-bundle-identifier com.voxhash.db-storage-manager pyinstaller.spec || {
66+ pyinstaller --clean --noconfirm --name "DB_Storage_Manager" --onefile db_storage_manager/main.py || echo "macOS build attempted"
67+ }
68+ mkdir -p release
69+ if [ -d "dist/DB Storage Manager.app" ]; then
70+ cp -r "dist/DB Storage Manager.app" release/ || echo "App bundle copied"
71+ elif [ -f "dist/DB_Storage_Manager" ]; then
72+ cp dist/DB_Storage_Manager release/DB_Storage_Manager-v1.0.1 || echo "macOS executable copied"
73+ fi
74+
75+ - name : Create macOS DMG
76+ if : matrix.os == 'macos-latest'
77+ run : |
78+ if [ -d "release/DB Storage Manager.app" ]; then
79+ hdiutil create -volname "DB Storage Manager" -srcfolder "release/DB Storage Manager.app" -ov -format UDZO release/DB_Storage_Manager-v1.0.1.dmg || echo "DMG creation attempted"
80+ elif [ -f "release/DB_Storage_Manager" ]; then
81+ mkdir -p "release/DB Storage Manager.app/Contents/MacOS"
82+ cp release/DB_Storage_Manager "release/DB Storage Manager.app/Contents/MacOS/DB Storage Manager"
83+ hdiutil create -volname "DB Storage Manager" -srcfolder "release/DB Storage Manager.app" -ov -format UDZO release/DB_Storage_Manager-v1.0.1.dmg || echo "DMG creation attempted"
84+ fi
85+
86+ - name : Build Linux AppImage
87+ if : matrix.os == 'ubuntu-latest'
88+ run : |
89+ pyinstaller --clean --noconfirm --name "DB_Storage_Manager" --onefile db_storage_manager/main.py || echo "Linux build attempted"
90+ mkdir -p release
91+ if [ -f "dist/DB_Storage_Manager" ]; then
92+ cp dist/DB_Storage_Manager release/DB_Storage_Manager-v1.0.1.AppImage || echo "Linux executable prepared"
93+ fi
94+
5195 - name : Upload build artifacts
5296 uses : actions/upload-artifact@v4
5397 with :
5498 name : dist-${{ matrix.os }}
55- path : dist/
99+ path : |
100+ dist/
101+ release/
56102
57103 publish :
58104 name : Publish Release
@@ -80,9 +126,13 @@ jobs:
80126 uses : softprops/action-gh-release@v1
81127 with :
82128 files : |
83- dist/ubuntu-latest/*
84- dist/windows-latest/*
85- dist/macos-latest/*
129+ dist/ubuntu-latest/dist/*
130+ dist/windows-latest/dist/*
131+ dist/windows-latest/release/*.exe
132+ dist/macos-latest/dist/*
133+ dist/macos-latest/release/*.dmg
134+ dist/macos-latest/release/*.app
135+ dist/ubuntu-latest/release/*
86136 generate_release_notes : true
87137 draft : false
88138 prerelease : false
0 commit comments