Skip to content
Latchkey

Build Flatpak workflow (linx-systems/clamui)

The Build Flatpak workflow from linx-systems/clamui, explained and optimized by Latchkey.

C

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 →
Source: linx-systems/clamui.github/workflows/build-flatpak.ymlLicense MITView source

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

workflow (.yml)
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

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.

Actions used in this workflow