ci: implement robust multi-architecture build and test workflow#677
Merged
tillkamppeter merged 10 commits intoOpenPrinting:masterfrom Mar 9, 2026
Merged
ci: implement robust multi-architecture build and test workflow#677tillkamppeter merged 10 commits intoOpenPrinting:masterfrom
tillkamppeter merged 10 commits intoOpenPrinting:masterfrom
Conversation
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
This PR introduces a comprehensive, multi-architecture GitHub Actions CI workflow (
build.yml) forcups-filters. It ensures the repository automatically builds and passes its test suite across a matrix of different architectures, helping catch platform-specific regressions early.Architectures Covered
The matrix strategy runs the build and test pipeline on four architectures:
uraimo/run-on-arch-action@v3)uraimo/run-on-arch-action@v3)Implementation Details & Fixes
Because
cups-filterssits at the top of the OpenPrinting dependency chain, this workflow includes several critical configurations to ensure a stable testing environment:cups-filters, the CI dynamically clones, compiles, and installspdfio,libcupsfilters, andlibppdfrom source. This ensures we are always testing against the latest upstream code.libcupsfilters-devandlibppd-devfrom the runner to guarantee the build links against our fresh source builds, not stale Ubuntu system packages.ldconfigimmediately after installing each dependency so the system linker immediately locates the newly compiled.sofiles.apt-getpackages (includingautopoint,libjxl-dev,libpoppler-cpp-dev,libexif-dev, and Avahi/DBus headers) to prevent./autogen.shand./configurefrom failing.set -exat the very top of the script. This enforces fail-fast execution, ensuring that if a dependency fails to compile inside the emulator, the CI halts immediately rather than failing silently downstream.if: always()) uploads all**/*.logfiles as GitHub Artifacts. This guarantees diagnostic data (liketest-suite.log) is always available to developers, even ifmake checkfails inside a nested directory.Testing
All four architectures (native and emulated) have been tested on my fork and are successfully passing the
autogen.sh,configure,make, andmake checksteps.