name: Build Flatpak on: workflow_dispatch: inputs: version: description: "Version to build (e.g. 0.9.0)" required: true permissions: contents: write jobs: flatpak: name: Build Flatpak bundle runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Free up disk space run: | sudo rm -rf /usr/local/lib/android /opt/ghc /usr/share/dotnet /opt/hostedtoolcache/CodeQL sudo docker image prune -af || true - name: Install flatpak tooling run: | sudo apt-get update sudo apt-get install -y flatpak flatpak-builder flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo - name: Cache flatpak runtimes/SDKs uses: actions/cache@v4 with: path: ~/.local/share/flatpak key: flatpak-runtimes-gnome48-rust-stable - name: Install runtime and SDK run: | flatpak --user install -y --noninteractive flathub \ org.gnome.Platform//48 \ org.gnome.Sdk//48 - name: Build flatpak run: | rm -rf build-dir repo flatpak-builder \ --user \ --install-deps-from=flathub \ --repo=repo \ --force-clean \ build-dir \ io.github.moku_project.Moku.yml - name: Bundle flatpak run: | flatpak build-bundle \ --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo \ repo \ moku.flatpak \ io.github.moku_project.Moku - name: Upload Flatpak artifact to release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | for i in $(seq 1 12); do RELEASE_ID=$(curl -s -H "Authorization: Bearer $GITHUB_TOKEN" \ "https://api.github.com/repos/moku-project/Moku/releases" \ | jq -r '.[] | select(.tag_name == "v${{ github.event.inputs.version }}") | .id' | head -1) [ -n "$RELEASE_ID" ] && break echo "Waiting for release... attempt $i"; sleep 15 done [ -z "$RELEASE_ID" ] && { echo "ERROR: release not found"; exit 1; } curl -s -X POST \ -H "Authorization: Bearer $GITHUB_TOKEN" \ -H "Content-Type: application/octet-stream" \ --data-binary @"moku.flatpak" \ "https://uploads.github.com/repos/moku-project/Moku/releases/$RELEASE_ID/assets?name=moku.flatpak"