name: Build Test on: push: branches: - "*" pull_request: branches: - "*" jobs: build-test: name: Build and Test runs-on: ubuntu-latest steps: - name: Clone Repo uses: https://git.quad4.io/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: fetch-depth: 0 - name: Install NodeJS uses: https://git.quad4.io/actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 22 - name: Install Python uses: https://git.quad4.io/actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 with: python-version: "3.13" - name: Install Poetry run: python -m pip install --upgrade pip poetry>=2.0.0 - name: Install pnpm uses: https://git.quad4.io/actions/setup-pnpm@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4 with: version: 10.27.0 - name: Install system dependencies run: | sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install -y wine32:i386 wine64 patchelf libopusfile0 ffmpeg espeak-ng nsis zip rpm flatpak flatpak-builder elfutils appstream appstream-util flatpak remote-add --if-not-exists --user flathub https://dl.flathub.org/repo/flathub.flatpakrepo # Install runtimes required for Flatpak build flatpak install --user -y flathub org.freedesktop.Platform//24.08 org.freedesktop.Sdk//24.08 org.electronjs.Electron2.BaseApp//24.08 - name: Setup Task uses: https://git.quad4.io/actions/setup-task@0ab1b2a65bc55236a3bc64cde78f80e20e8885c2 # v1 with: version: "3.46.3" - name: Install dependencies run: task install - name: Build Frontend run: task build-frontend - name: Build Backend (Wheel) run: task wheel - name: Build Electron App (Linux) run: pnpm run dist:linux - name: Build Electron App (RPM - Experimental) continue-on-error: true run: task build-rpm - name: Build Electron App (Flatpak - Experimental) continue-on-error: true run: task build-flatpak - name: Build Electron App (Windows EXE and NSIS) env: WINEDEBUG: -all run: pnpm run dist:windows - name: Build Electron App (ZIP) run: task build-zip - name: Prepare release assets run: | mkdir -p release-assets # Collect Linux artifacts find dist -maxdepth 1 -type f \( -name "*-linux*.AppImage" -o -name "*-linux*.deb" -o -name "*-linux*.rpm" -o -name "*-linux*.flatpak" \) -exec cp {} release-assets/ \; # Collect Windows artifacts find dist -maxdepth 1 -type f \( -name "*-win*.exe" \) -exec cp {} release-assets/ \; # Collect ZIP artifacts from Electron Forge find out/make -type f -name "*.zip" -exec cp {} release-assets/ \; # Collect Python artifacts find python-dist -maxdepth 1 -type f -name "*.whl" -exec cp {} release-assets/ \; # Create frontend zip (cd meshchatx/public && zip -r ../../release-assets/meshchatx-frontend.zip .) # Generate checksums cd release-assets for file in *; do if [ -f "$file" ] && [[ "$file" != *.sha256 ]]; then sha256sum "$file" | tee "${file}.sha256" fi done - name: Upload artifacts uses: https://git.quad4.io/actions/upload-artifact@ff15f0306b3f739f7b6fd43fb5d26cd321bd4de5 # v3.2.1 with: name: meshchatx-artifacts path: release-assets/*