Skip to content

Commit fc41539

Browse files
authored
ci: make source-@master legs non-blocking, label failure origin (#80)
The source-2.5.x / source-3.x legs build CUPS and libcupsfilters from OpenPrinting @master, an unpinned moving target; a transient breakage there reddens the leg with no libppd fault. Mark those legs continue-on-error so they no longer block PRs, while the distro system-2x leg stays required. ci-setup.sh now annotates each failure as UPSTREAM-DEP-FAILED or LIBPPD-FAILED so a real libppd regression on the non-blocking legs is still visible.
1 parent 522af8d commit fc41539

2 files changed

Lines changed: 30 additions & 0 deletions

File tree

‎.github/workflows/build.yml‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,14 @@ jobs:
3131
build-matrix:
3232
name: Build & Test (${{ matrix.arch }}, ${{ matrix.cups }})
3333
runs-on: ${{ matrix.runs-on }}
34+
# The source-* legs build their CUPS / libcupsfilters from OpenPrinting
35+
# @master, an unpinned moving target: a transient breakage there (e.g.
36+
# libcups master failing its own `make install`) reddens the leg through no
37+
# fault of libppd. Keep the distro system-2x leg required (blocking), but
38+
# let the source-@master legs report without blocking the PR. ci-setup.sh
39+
# annotates each failure as UPSTREAM-DEP-FAILED vs LIBPPD-FAILED so a real
40+
# libppd regression on these legs is still visible even while non-blocking.
41+
continue-on-error: ${{ matrix.cups != 'system-2x' }}
3442
# Building CUPS / libcupsfilters from source under QEMU is slow; allow plenty.
3543
timeout-minutes: 360
3644

‎ci/ci-setup.sh‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,28 @@
3434
# runners; it detects which automatically.
3535
set -eu
3636

37+
# Classify a failure so CI (and humans) can tell an upstream-dependency
38+
# breakage apart from a real libppd failure. Each invocation of this script
39+
# handles exactly one subcommand, so $1 identifies which side failed:
40+
# providing the CUPS / libcupsfilters stack (built from @master on the
41+
# source-* legs, an unpinned moving target) vs building/testing libppd itself.
42+
# The source-* matrix legs are non-blocking precisely because of the former
43+
# class of transient upstream breakage; this label makes the distinction
44+
# explicit on both native and emulated legs (they run the same script).
45+
_subcmd="${1:-}"
46+
_classify_failure() {
47+
rc=$?
48+
[ "$rc" -eq 0 ] && exit 0
49+
case "$_subcmd" in
50+
cups|pdfio|libcupsfilters)
51+
echo "::error::UPSTREAM-DEP-FAILED: '$_subcmd' failed while building the CUPS/libcupsfilters stack (from @master on the source-* legs). This is an upstream-dependency breakage, not a libppd bug." ;;
52+
build-libppd)
53+
echo "::error::LIBPPD-FAILED: libppd build/test failed." ;;
54+
esac
55+
exit "$rc"
56+
}
57+
trap _classify_failure EXIT
58+
3759
PDFIO_VER=1.6.4
3860
LIBCUPSFILTERS_URL="${LIBCUPSFILTERS_URL:-https://github.com/OpenPrinting/libcupsfilters.git}"
3961
LIBCUPSFILTERS_REF="${LIBCUPSFILTERS_REF:-master}"

0 commit comments

Comments
 (0)