Optimize Linux CI/CD pipeline build performance and packaging #40

Closed
opened 2026-08-24 10:17:27 +01:00 by gronod · 0 comments
Owner

Problem

The Linux CI/CD build stage currently takes ~19 minutes (over twice as long as the Windows build at ~9.5 minutes).

Root Causes

  1. build-linux.yml runs in an ephemeral container where ~40 Ubuntu development packages are downloaded and installed on every run via apt-get without caching (~3.5 minutes).
  2. AppImage packaging takes >5 minutes because NO_STRIP: "true" prevents stripping debug symbols, bloating the AppDir to 660MB during SquashFS compression and ELF dependency traversal over 100+ ArgyllCMS sidecar binaries.
  3. Swatinem/rust-cache@v2 lacks workspaces: "src-tauri -> target", defaulting to root where no Cargo.lock exists.
  4. Tauri builds unwanted .rpm bundles that are not uploaded.
  5. Older actions/upload-artifact@v3 takes ~2.5 minutes to upload packages.

Proposed Solutions

  1. Add APT package caching and use --no-install-recommends with -qq.
  2. Remove NO_STRIP: "true" from jobs.build-linux.env.
  3. Add workspaces: "src-tauri -> target" to Swatinem/rust-cache@v2.
  4. Add --bundles deb,appimage to npm run tauri build.
  5. Upgrade to actions/upload-artifact@v4 across Linux and Windows workflows.
### Problem The Linux CI/CD build stage currently takes ~19 minutes (over twice as long as the Windows build at ~9.5 minutes). ### Root Causes 1. `build-linux.yml` runs in an ephemeral container where ~40 Ubuntu development packages are downloaded and installed on every run via `apt-get` without caching (~3.5 minutes). 2. AppImage packaging takes >5 minutes because `NO_STRIP: "true"` prevents stripping debug symbols, bloating the AppDir to 660MB during SquashFS compression and ELF dependency traversal over 100+ ArgyllCMS sidecar binaries. 3. `Swatinem/rust-cache@v2` lacks `workspaces: "src-tauri -> target"`, defaulting to root where no `Cargo.lock` exists. 4. Tauri builds unwanted `.rpm` bundles that are not uploaded. 5. Older `actions/upload-artifact@v3` takes ~2.5 minutes to upload packages. ### Proposed Solutions 1. Add APT package caching and use `--no-install-recommends` with `-qq`. 2. Remove `NO_STRIP: "true"` from `jobs.build-linux.env`. 3. Add `workspaces: "src-tauri -> target"` to `Swatinem/rust-cache@v2`. 4. Add `--bundles deb,appimage` to `npm run tauri build`. 5. Upgrade to `actions/upload-artifact@v4` across Linux and Windows workflows.
Sign in to join this conversation.