name: Build ProxMenux Monitor AppImage on: push: branches: [ main ] paths: [ 'AppImage/**' ] pull_request: branches: [ main ] paths: [ 'AppImage/**' ] workflow_dispatch: jobs: build: runs-on: ubuntu-22.04 steps: - name: Checkout code uses: actions/checkout@v6 - name: Setup Node.js uses: actions/setup-node@v6 with: node-version: '22' - name: Install dependencies working-directory: AppImage run: npm install --legacy-peer-deps - name: Build Next.js app working-directory: AppImage run: npm run build - name: Install Python dependencies run: | sudo apt-get update sudo apt-get install -y python3 python3-pip python3-venv - name: Make build script executable working-directory: AppImage run: chmod +x scripts/build_appimage.sh - name: Build AppImage working-directory: AppImage run: ./scripts/build_appimage.sh - name: Set up Python 3.11 validation runtime uses: actions/setup-python@v5 with: python-version: '3.11' - name: Verify bundled Python 3.11 runtime env: PYTHONPATH: /tmp/proxmenux_build/ProxMenux.AppDir/usr/lib/python3/vendor/cp311:/tmp/proxmenux_build/ProxMenux.AppDir/usr/lib/python3/dist-packages run: python -c 'import gevent, greenlet, geventwebsocket, zope.interface; from gevent import pywsgi; print(gevent.__version__)' - name: Set up Python 3.13 validation runtime uses: actions/setup-python@v5 with: python-version: '3.13' - name: Verify bundled Python 3.13 runtime env: PYTHONPATH: /tmp/proxmenux_build/ProxMenux.AppDir/usr/lib/python3/vendor/cp313:/tmp/proxmenux_build/ProxMenux.AppDir/usr/lib/python3/dist-packages run: python -c 'import gevent, greenlet, geventwebsocket, zope.interface; from gevent import pywsgi; print(gevent.__version__)' - name: Get version from package.json id: version working-directory: AppImage run: echo "VERSION=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT - name: Upload AppImage artifact uses: actions/upload-artifact@v7 with: name: ProxMenux-${{ steps.version.outputs.VERSION }}-AppImage path: AppImage/dist/*.AppImage retention-days: 30