Fix Flatpak build: use GNOME 48 runtime, vendor cargo deps offline #8
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Linux (GTK4) | |
| on: | |
| push: | |
| branches: [main] | |
| tags: ['v*'] | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| test: | |
| name: Test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: Cache cargo | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| target | |
| key: ${{ runner.os }}-cargo-test-${{ hashFiles('**/Cargo.lock') }} | |
| - name: Install GTK4 + libadwaita dev dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libgtk-4-dev libadwaita-1-dev | |
| - name: Test all crates | |
| run: cargo test --workspace | |
| build-binary: | |
| name: Build binary (x86_64) | |
| runs-on: ubuntu-latest | |
| needs: test | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: Install GTK4 + libadwaita dev dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libgtk-4-dev libadwaita-1-dev | |
| - name: Cache cargo | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| target | |
| key: ${{ runner.os }}-cargo-release-${{ hashFiles('**/Cargo.lock') }} | |
| - name: Build release binary | |
| run: cargo build --release -p dm-gtk | |
| - name: Strip binary | |
| run: strip target/release/diskmap | |
| - name: Upload binary | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: diskmap-linux-x86_64 | |
| path: target/release/diskmap | |
| build-deb: | |
| name: Build .deb package | |
| runs-on: ubuntu-latest | |
| needs: test | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: Install GTK4 + libadwaita dev dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libgtk-4-dev libadwaita-1-dev | |
| - name: Install cargo-deb | |
| run: cargo install cargo-deb | |
| - name: Cache cargo | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| target | |
| key: ${{ runner.os }}-cargo-deb-${{ hashFiles('**/Cargo.lock') }} | |
| - name: Build .deb | |
| run: cargo deb -p dm-gtk | |
| - name: Upload .deb | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: diskmap-deb | |
| path: target/debian/*.deb | |
| build-flatpak: | |
| name: Build Flatpak | |
| runs-on: ubuntu-latest | |
| needs: test | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: Vendor cargo dependencies | |
| run: cargo vendor | |
| - name: Install Flatpak and flatpak-builder | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y flatpak flatpak-builder | |
| sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo | |
| sudo flatpak install -y flathub org.gnome.Platform//48 org.gnome.Sdk//48 | |
| sudo flatpak install -y flathub org.freedesktop.Sdk.Extension.rust-stable//24.08 | |
| - name: Build Flatpak | |
| working-directory: ./packaging | |
| run: | | |
| flatpak-builder --force-clean --repo=repo builddir com.diskmap.app.yml | |
| flatpak build-bundle repo diskmap.flatpak com.diskmap.app | |
| - name: Upload Flatpak | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: diskmap-flatpak | |
| path: packaging/diskmap.flatpak | |
| release: | |
| name: Release | |
| runs-on: ubuntu-latest | |
| needs: [build-binary, build-deb, build-flatpak] | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| path: artifacts | |
| - name: List artifacts | |
| run: find artifacts -type f | |
| - name: Extract version from tag | |
| id: version | |
| run: echo "version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT | |
| - name: Generate changelog | |
| id: changelog | |
| run: | | |
| # Get commits since last tag | |
| PREV_TAG=$(git tag --sort=-version:refname | head -2 | tail -1) | |
| if [ -z "$PREV_TAG" ] || [ "$PREV_TAG" = "${{ steps.version.outputs.version }}" ]; then | |
| CHANGES="Initial release" | |
| else | |
| CHANGES=$(git log ${PREV_TAG}..HEAD --pretty=format:"- %s" --no-merges) | |
| fi | |
| echo "changes<<EOF" >> $GITHUB_OUTPUT | |
| echo "$CHANGES" >> $GITHUB_OUTPUT | |
| echo "EOF" >> $GITHUB_OUTPUT | |
| - name: Create GitHub Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: ${{ steps.version.outputs.version }} | |
| name: DiskMap ${{ steps.version.outputs.version }} | |
| body: | | |
| ## What's Changed | |
| ${{ steps.changelog.outputs.changes }} | |
| ## Downloads | |
| | Format | File | Notes | | |
| |--------|------|-------| | |
| | Binary | `diskmap` | Requires GTK4 + libadwaita installed | | |
| | Debian | `.deb` | For Debian, Ubuntu, Mint | | |
| | Flatpak | `.flatpak` | For any Linux distro | | |
| ## Install | |
| ```bash | |
| # Debian/Ubuntu | |
| sudo dpkg -i diskmap_*.deb | |
| # Binary | |
| chmod +x diskmap && ./diskmap | |
| ``` | |
| --- | |
| (c) 2026 Finn Devs LLC. All rights reserved. | |
| draft: false | |
| files: | | |
| artifacts/diskmap-linux-x86_64/diskmap | |
| artifacts/diskmap-deb/*.deb | |
| artifacts/diskmap-flatpak/diskmap.flatpak |