name: Test Flatpak Build on: pull_request: branches: [main] paths: - 'packages/app-core/packaging/flatpak/**' - '.github/workflows/test-flatpak.yml' workflow_dispatch: concurrency: group: test-flatpak-${{ github.ref }} cancel-in-progress: true # Default to least privilege. Override per-job where needed. permissions: contents: read jobs: build: name: Build & Validate Flatpak runs-on: ${{ fromJSON(vars.HETZNER_FLEET_ONLINE == 'false' && '["ubuntu-24.04"]' || '["self-hosted","hetzner-robot"]') }} steps: - name: Checkout uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 - name: Install Flatpak tools run: | sudo apt-get update sudo apt-get install -y flatpak flatpak-builder appstream-util flatpak remote-add --if-not-exists --user flathub https://dl.flathub.org/repo/flathub.flatpakrepo flatpak install -y --user flathub org.freedesktop.Platform//24.08 flatpak install -y --user flathub org.freedesktop.Sdk//24.08 - name: Validate AppStream metadata working-directory: packages/app-core/packaging/flatpak run: appstream-util validate-relax ai.elizaos.App.metainfo.xml - name: Validate desktop entry run: desktop-file-validate packages/app-core/packaging/flatpak/ai.elizaos.App.desktop # Offline-mode prep: generate node-sources.json on every PR so we # catch regressions in the generator pipeline before they show up # in a Flathub submission. Non-fatal for now — the manifest still # uses `npm install -g` over the build-time network share. - name: Install flatpak-node-generator id: install-fng continue-on-error: true run: pipx install flatpak-node-generator || pip install --user flatpak-node-generator - name: Generate offline node sources if: steps.install-fng.outcome == 'success' id: gen-sources continue-on-error: true working-directory: packages/app-core/packaging/flatpak run: | chmod +x generate-sources.sh ./generate-sources.sh test -s node-sources.json - name: Upload node-sources.json if: steps.gen-sources.outcome == 'success' uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a with: name: flatpak-node-sources path: packages/app-core/packaging/flatpak/node-sources.json retention-days: 30 - name: Build Flatpak working-directory: packages/app-core/packaging/flatpak run: | flatpak-builder --repo=repo --force-clean build-dir ai.elizaos.App.yml - name: Create bundle working-directory: packages/app-core/packaging/flatpak run: flatpak build-bundle repo elizaos-app.flatpak ai.elizaos.App - name: Install and test working-directory: packages/app-core/packaging/flatpak run: | flatpak --user install -y elizaos-app.flatpak flatpak run ai.elizaos.App --version || echo "Version check completed" flatpak run ai.elizaos.App --help || echo "Help check completed" - name: Upload bundle artifact uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a with: name: flatpak-test-bundle path: packages/app-core/packaging/flatpak/elizaos-app.flatpak retention-days: 7