Harden CICD image refs against empty SHA/base hash
Some checks failed
CICD / Build and Publish CICD Base Image (push) Successful in 26s
CICD / Build and Push CICD Image (push) Successful in 21m55s
CICD / Build CICD Image Failure Postmortem (push) Has been skipped
CICD / Pre-commit Checks (push) Successful in 8m46s
CICD / Backend Doctests (push) Successful in 25s
CICD / Frontend Tests (push) Successful in 12m49s
CICD / Backend Tests (push) Successful in 18m23s
CICD / Source Lanes Failure Postmortem (push) Has been skipped
CICD / CICD Tests Complete (push) Successful in 6s
CICD / Build Backend Base Image (push) Successful in 3m59s
CICD / Build Integration Tester Image (push) Successful in 1m16s
CICD / Build E2E Tester Image (push) Failing after 2m27s
CICD / Build Backend Main Image (push) Successful in 1m28s
CICD / Build Frontend Base Image (push) Successful in 7m20s
CICD / Build and Publish Runtime Images (Legacy Disabled) (push) Has been skipped
CICD / Build Frontend Main Image (push) Successful in 1m46s
CICD / Runtime Images Failure Postmortem (push) Failing after 13m40s
CICD / Production Images Complete (push) Failing after 13m47s
CICD / Runtime Black-Box Integration Tests (push) Has been cancelled
CICD / Integration Tests Failure Postmortem (push) Has been cancelled
CICD / End-to-End Tests (push) Has been cancelled
CICD / E2E Tests Failure Postmortem (push) Has been cancelled

This commit is contained in:
copilotcoder
2026-07-07 21:41:20 -04:00
parent ca99393700
commit 6f8913ba70

View File

@@ -239,6 +239,21 @@ jobs:
umask 077
trap 'rm -f /tmp/ssh_key' EXIT
trim_spaces() {
printf '%s' "$1" | tr -d '[:space:]'
}
is_hex() {
value="$1"
if [ -z "${value}" ]; then
return 1
fi
case "${value}" in
(*[!0-9a-fA-F]*) return 1 ;;
(*) return 0 ;;
esac
}
echo "=== Pre-build disk telemetry ==="
df -h || true
if command -v docker >/dev/null 2>&1; then
@@ -252,7 +267,25 @@ jobs:
echo "${PACKAGE_ACCESS_TOKEN}" | docker login "http://${GITEA_REGISTRY}" -u "${REGISTRY_USER}" --password-stdin
BASE_HASH="${BASE_HASH_INPUT:-${BASE_HASH_FROM_BUILD}}"
RESOLVED_HEAD_SHA="$(trim_spaces "${HEAD_SHA:-}")"
if ! is_hex "${RESOLVED_HEAD_SHA}"; then
echo "❌ Invalid or empty HEAD_SHA resolved for build_cicd: '${HEAD_SHA:-}'"
exit 1
fi
BASE_HASH="$(trim_spaces "${BASE_HASH_INPUT:-${BASE_HASH_FROM_BUILD}}")"
if ! is_hex "${BASE_HASH}"; then
BASE_HASH="$(./scripts/compute-cicd-base-hash.sh | tr -d '[:space:]')"
fi
if ! is_hex "${BASE_HASH}"; then
echo "❌ Invalid or empty BASE_HASH resolved for build_cicd: '${BASE_HASH_INPUT:-${BASE_HASH_FROM_BUILD}}'"
exit 1
fi
echo "resolved_head_sha=${RESOLVED_HEAD_SHA}"
echo "resolved_base_hash=${BASE_HASH}"
BASE_IMAGE="${GITEA_REGISTRY}/darkhelm.org/plex-playlist-cicd-base:${BASE_HASH}"
docker pull "${BASE_IMAGE}"
@@ -262,14 +295,14 @@ jobs:
docker build -f Dockerfile.cicd \
--secret id=ssh_private_key,src=/tmp/ssh_key \
--add-host "${GITEA_SSH_HOST}:${GITEA_REGISTRY_IP}" \
--build-arg GITHUB_SHA="${HEAD_SHA}" \
--build-arg GITHUB_SHA="${RESOLVED_HEAD_SHA}" \
--build-arg CICD_BASE_IMAGE="${BASE_IMAGE}" \
-t cicd:latest .
docker tag cicd:latest "${GITEA_REGISTRY}/darkhelm.org/plex-playlist-cicd:latest"
docker tag cicd:latest "${GITEA_REGISTRY}/darkhelm.org/plex-playlist-cicd:${HEAD_SHA}"
docker tag cicd:latest "${GITEA_REGISTRY}/darkhelm.org/plex-playlist-cicd:${RESOLVED_HEAD_SHA}"
docker push "${GITEA_REGISTRY}/darkhelm.org/plex-playlist-cicd:latest"
docker push "${GITEA_REGISTRY}/darkhelm.org/plex-playlist-cicd:${HEAD_SHA}"
docker push "${GITEA_REGISTRY}/darkhelm.org/plex-playlist-cicd:${RESOLVED_HEAD_SHA}"
- *failure_diagnostics_step