The five builder images now live on home-ci-core's LAN registry (192.168.1.58:5010) under content keys — a hash of the ci/ tree (+ rust-toolchain.toml for the cross image). docker.yml builds one only when its key has no manifest yet, so a push that doesn't touch ci/ costs a curl per image instead of seven WAN pushes and a set of per-SHA tags that no plain prune could ever reclaim. Releases pin builders by copying the key manifest to a vX.Y.Z tag via the registry API — no rebuild, no bytes moved. Around that: deb/rpm/arch/android/apple/decky get path filters so docs-only pushes stop lighting up the whole fleet (branch pushes only — tag runs match tags:, as flatpak/windows-msix releases have proven for months); the report-only bench job moves to bench.yml (nightly + dispatch) and stops occupying a fleet slot per push; flatpak caches its Flathub runtimes and builder state instead of re-downloading multi-GB every run; rpm's cargo registry cache gets its own key namespace instead of sharing the Ubuntu jobs'; audit caches cargo bin+registry rather than the whole toolchain dir; docker-prune.sh loses the local act-cache cap/burst-clear (the cache is central now — deleting it under disk pressure was how runner-2 ended up cold-building everything) and gains a leaked-network prune. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
76 lines
3.1 KiB
YAML
76 lines
3.1 KiB
YAML
# Native Linux client screenshots for the app/marketing listings. The client renders
|
|
# host-free mock scenes (PUNKTFUNK_SHOT_SCENE) under a virtual X display; the driver
|
|
# (clients/linux/tools/screenshots.sh) grabs each one — no host, GPU, or Wayland. The
|
|
# Linux analogue of apple.yml's `screenshots` job, gated to STABLE RELEASE tags only.
|
|
# Standalone + best-effort: a failure here reds nothing else. PNGs land as a 30-day
|
|
# artifact; they are not committed or published.
|
|
name: linux-client-screenshots
|
|
# One pending run per workflow+ref: a newer push supersedes the queued/running one and cancels
|
|
# it (a canary only needs the latest commit; each release tag is its own ref so tag runs never
|
|
# cancel each other). Keeps a busy push cadence from piling ~10 queued runs per commit onto the
|
|
# runner fleet. Gitea honors this for push triggers (PR triggers: see gitea#35933).
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
|
|
on:
|
|
push:
|
|
tags: ["v*"]
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
screenshots:
|
|
if: startsWith(github.ref, 'refs/tags/v') || github.event_name == 'workflow_dispatch'
|
|
runs-on: ubuntu-24.04
|
|
# Same image as ci.yml/deb.yml — already carries the Rust toolchain + GTK/SDL build deps.
|
|
container:
|
|
image: 192.168.1.58:5010/punktfunk-rust-ci:latest
|
|
timeout-minutes: 90
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
# Client link deps (baked into the image; kept here so the job is green across image
|
|
# rebuilds — a no-op once present) PLUS the headless-render extras: a virtual X server,
|
|
# software GL+Vulkan (llvmpipe/lavapipe), the icon theme + fonts the UI draws with, and a
|
|
# root-window grab tool.
|
|
- name: Client link + headless-render deps
|
|
run: |
|
|
apt-get update
|
|
apt-get install -y --no-install-recommends \
|
|
libgtk-4-dev libadwaita-1-dev libsdl3-dev libvulkan-dev \
|
|
xvfb x11-utils imagemagick scrot \
|
|
libgl1-mesa-dri mesa-vulkan-drivers \
|
|
adwaita-icon-theme fonts-cantarell fonts-dejavu-core
|
|
|
|
# Reuse the workspace cargo caches (same keys as ci.yml/deb.yml).
|
|
- name: Cache keys
|
|
run: echo "rustc=$(rustc --version | cut -d' ' -f2)" >> "$GITHUB_ENV"
|
|
- uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
/usr/local/cargo/registry
|
|
/usr/local/cargo/git
|
|
key: cargo-home-${{ hashFiles('Cargo.lock') }}
|
|
restore-keys: cargo-home-
|
|
- uses: actions/cache@v4
|
|
with:
|
|
path: target
|
|
key: cargo-target-v3-${{ env.rustc }}-${{ hashFiles('Cargo.lock') }}
|
|
restore-keys: cargo-target-v3-${{ env.rustc }}-
|
|
|
|
- name: Build client
|
|
run: cargo build --release -p punktfunk-client-linux --locked
|
|
|
|
- name: Capture screenshots
|
|
run: bash clients/linux/tools/screenshots.sh
|
|
|
|
- name: Upload screenshots
|
|
if: always()
|
|
# v3: Gitea's API rejects upload-artifact@v4 (see apple.yml). Download is a zip.
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: punktfunk-linux-client-screenshots
|
|
path: clients/linux/screenshots
|
|
retention-days: 30
|