name: Flatpak on: push: tags: - 'v*' workflow_dispatch: inputs: tag: description: 'Release tag to build (e.g., v0.23.0)' required: true permissions: contents: write jobs: flatpak: name: Build Flatpak runs-on: ubuntu-latest container: image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-48 options: --privileged steps: - uses: actions/checkout@v6 - name: Get version id: version run: | if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then VERSION="${{ github.event.inputs.tag }}" else VERSION="${GITHUB_REF#refs/tags/}" fi echo "version=$VERSION" >> $GITHUB_OUTPUT echo "Building Flatpak for version: $VERSION" - name: Wait for release assets run: | VERSION="${{ steps.version.outputs.version }}" URL="https://github.com/bnema/dumber/releases/download/${VERSION}/dumber_linux_x86_64.tar.gz" echo "Waiting for release asset: $URL" for i in $(seq 1 30); do if curl -sL --fail -o /dev/null "$URL"; then echo "Release asset available!" exit 0 fi echo "Attempt $i/30: Asset not ready, waiting 10s..." sleep 10 done echo "Timeout waiting for release asset" exit 1 - name: Download and compute SHA256 id: sha256 run: | VERSION="${{ steps.version.outputs.version }}" URL="https://github.com/bnema/dumber/releases/download/${VERSION}/dumber_linux_x86_64.tar.gz" SHA256=$(curl -sL "$URL" | sha256sum | cut -d' ' -f1) echo "sha256=$SHA256" >> $GITHUB_OUTPUT echo "SHA256: $SHA256" - name: Generate manifest run: | VERSION="${{ steps.version.outputs.version }}" SHA256="${{ steps.sha256.outputs.sha256 }}" cat > dev.bnema.Dumber.yml << EOF id: dev.bnema.Dumber runtime: org.gnome.Platform runtime-version: '48' sdk: org.gnome.Sdk command: dumber finish-args: - --socket=wayland - --device=dri - --share=network - --socket=pulseaudio - --device=all - --filesystem=xdg-download - --filesystem=home:ro - --filesystem=xdg-run/pipewire-0:ro modules: - name: dumber buildsystem: simple build-commands: - install -Dm755 dumber /app/bin/dumber - install -Dm644 dev.bnema.Dumber.desktop /app/share/applications/dev.bnema.Dumber.desktop - install -Dm644 logo.svg /app/share/icons/hicolor/scalable/apps/dev.bnema.Dumber.svg - install -Dm644 logo-512.png /app/share/icons/hicolor/512x512/apps/dev.bnema.Dumber.png - install -Dm644 dev.bnema.Dumber.metainfo.xml /app/share/metainfo/dev.bnema.Dumber.metainfo.xml sources: - type: archive url: https://github.com/bnema/dumber/releases/download/${VERSION}/dumber_linux_x86_64.tar.gz sha256: ${SHA256} - type: file path: flatpak/dev.bnema.Dumber.desktop dest-filename: dev.bnema.Dumber.desktop - type: file path: assets/logo.svg dest-filename: logo.svg - type: file path: assets/logo-512.png dest-filename: logo-512.png - type: file path: flatpak/dev.bnema.Dumber.metainfo.xml dest-filename: dev.bnema.Dumber.metainfo.xml EOF echo "Generated manifest:" cat dev.bnema.Dumber.yml - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 with: bundle: dumber.flatpak manifest-path: dev.bnema.Dumber.yml cache-key: flatpak-builder-${{ steps.version.outputs.version }} - name: Upload Flatpak to Release uses: softprops/action-gh-release@v2 with: tag_name: ${{ steps.version.outputs.version }} files: dumber.flatpak env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}