Build Flatpak workflow (linx-systems/clamui)
The Build Flatpak workflow from linx-systems/clamui, explained and optimized by Latchkey.
CI health: C - fair
Run this on Latchkey for self-healing, caching, and up to 58% lower cost.
Grade your own workflow free or run it on Latchkey →What it does
This is the Build Flatpak workflow from the linx-systems/clamui repository, a real project running GitHub Actions. It is shown here with attribution under its MIT license.
Below, Latchkey shows a faster, safer version produced by its optimization engine.
The workflow
name: Build Flatpak
on:
push:
branches: [master]
tags: ['v*']
pull_request:
branches: [master]
workflow_dispatch:
workflow_call:
jobs:
build-flatpak:
permissions:
contents: read
strategy:
matrix:
include:
- arch: x86_64
runner: ubuntu-22.04
- arch: aarch64
runner: ubuntu-24.04-arm
fail-fast: false
runs-on: ${{ matrix.runner }}
container:
image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-49
options: --privileged
steps:
- name: Checkout repository
uses: actions/checkout@v7
- name: Build Flatpak
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
with:
manifest-path: flathub/io.github.linx_systems.ClamUI.local.yml
bundle: clamui-${{ matrix.arch }}.flatpak
arch: ${{ matrix.arch }}
cache-key: flatpak-builder-${{ matrix.runner }}-${{ matrix.arch }}
- name: Upload Flatpak bundle artifact
uses: actions/upload-artifact@v7
with:
name: flatpak-bundle-${{ matrix.arch }}
path: clamui-${{ matrix.arch }}.flatpak
retention-days: 7
The same workflow, on Latchkey
Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.
name: Build Flatpak on: push: branches: [master] tags: ['v*'] pull_request: branches: [master] workflow_dispatch: workflow_call: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: build-flatpak: timeout-minutes: 30 permissions: contents: read strategy: matrix: include: - arch: x86_64 runner: ubuntu-22.04 - arch: aarch64 runner: ubuntu-24.04-arm fail-fast: false runs-on: ${{ matrix.runner }} container: image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-49 options: --privileged steps: - name: Checkout repository uses: actions/checkout@v7 - name: Build Flatpak uses: flatpak/flatpak-github-actions/flatpak-builder@v6 with: manifest-path: flathub/io.github.linx_systems.ClamUI.local.yml bundle: clamui-${{ matrix.arch }}.flatpak arch: ${{ matrix.arch }} cache-key: flatpak-builder-${{ matrix.runner }}-${{ matrix.arch }} - name: Upload Flatpak bundle artifact uses: actions/upload-artifact@v7 with: name: flatpak-bundle-${{ matrix.arch }} path: clamui-${{ matrix.arch }}.flatpak retention-days: 7
What changed
- Cancel superseded runs when a branch or PR gets a newer push.
- Add a job timeout so a hung step cannot burn hours of runner time.
1 third-party action is referenced by a movable tag. Pin it to the commit SHA (Latchkey resolves and applies this automatically) so a repointed tag cannot change what runs.
This workflow runs 1 job per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.