Files
bootc-images/ci-matrix.sh
T
Misthios fdc1441c32
Build containers / Compute build matrix (push) Successful in 3s
Build containers / ${{ matrix.image }} (${{ matrix.distro }}) (push) Canceled after 0s
Build containers / Prune old releases and tags (push) Canceled after 0s
ci: only rebuild images whose files changed
Add a changes job that diffs the pushed range (or PR base) and emits a matrix
via ci-matrix.sh. Shared files or build tooling changes rebuild all images.
Also fix the upstream package trim to drop top-level keys left empty (e.g.
packages-x86_64 when every entry is excluded), which broke fedora-remote.
2026-09-27 22:59:02 +02:00

34 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# Print the CI build matrix (JSON) for the images affected by the paths on
# stdin (one per line). Any change to shared files or the build tooling
# rebuilds every image. Empty input (e.g. schedule/manual runs) rebuilds all.
set -euo pipefail
changed="$(cat || true)"
all=0
[[ -z "${changed}" ]] && all=1
grep -qE '^(build\.sh|release\.sh|prune-releases\.sh|prune-registry\.sh|ci-matrix\.sh|\.gitea/)' <<< "${changed}" && all=1
grep -qE '^images/shared/' <<< "${changed}" && all=1
cosmic=0
remote=0
if [[ "${all}" == 1 ]]; then
cosmic=1
remote=1
fi
grep -qE '^images/fedora-cosmic/' <<< "${changed}" && cosmic=1
grep -qE '^images/fedora-remote/' <<< "${changed}" && remote=1
entries=()
if [[ "${cosmic}" == 1 ]]; then
entries+=('{"image":"fedora-cosmic","distro":"44","arch":"x86_64","runner":"job-v2"}')
entries+=('{"image":"fedora-cosmic","distro":"rawhide","arch":"x86_64","runner":"job-v2"}')
fi
if [[ "${remote}" == 1 ]]; then
entries+=('{"image":"fedora-remote","distro":"44","arch":"x86_64","runner":"job-v2"}')
fi
joined="$(IFS=,; printf '%s' "${entries[*]:-}")"
printf '{"include":[%s]}\n' "${joined}"