#!/usr/bin/env bash # Every distros// needs a complete distro.env and an entry in every Woodpecker # matrix, or a newly added distro silently never gets built. set -uo pipefail KEYS="BASE_IMAGE IMAGE CA_RPM_URL CA_RPM_SHA256 ESTATE_REPO PACKAGES" WORKFLOWS=(.woodpecker/build-matrix.yaml .woodpecker/docker.yaml) fail=0 for d in distros/*/; do n=$(basename "$d") for k in $KEYS; do grep -q "^${k}=" "${d}distro.env" || { echo "${d}distro.env: missing ${k}"; fail=1; } done for wf in "${WORKFLOWS[@]}"; do grep -q "DISTRO: ${n}\$" "$wf" || { echo "${wf}: distro ${n} missing from matrix"; fail=1; } # A matrix entry that restates a distro.env key must not drift from it — a stale # BASE_IMAGE here silently overrides distro.env for every CI build. while IFS='=' read -r k v; do [ -n "$k" ] || continue grep -q "^${k}=" "${d}distro.env" || continue ev=$(sed -n "s/^${k}=//p" "${d}distro.env" | head -1 | sed 's/^"//;s/"$//') [ "$v" = "$ev" ] || { echo "${wf}: matrix ${k}=\"${v}\" for ${n} disagrees with ${d}distro.env (\"${ev}\")"; fail=1; } done <