Retry frontend-base registry login and harden Renovate endpoint auth
CICD / Build and Publish CICD Base Image (push) Successful in 21s
CICD / Build and Push CICD Image (push) Successful in 38m43s
CICD / Build CICD Image Failure Postmortem (push) Has been skipped
CICD / Backend Doctests (push) Successful in 17s
CICD / Frontend Tests (push) Successful in 5m24s
CICD / Backend Tests (push) Successful in 10m4s
CICD / Pre-commit Checks (push) Successful in 30m1s
CICD / Source Lanes Failure Postmortem (push) Has been skipped
CICD / CICD Tests Complete (push) Successful in 6s
CICD / Build Integration Tester Image (push) Successful in 26s
CICD / Build Backend Base Image (push) Successful in 2m4s
CICD / Build Backend Main Image (push) Successful in 1m21s
CICD / Build Frontend Base Image (push) Successful in 8m5s
CICD / Build and Publish Runtime Images (Legacy Disabled) (push) Has been skipped
CICD / Build E2E Tester Image (push) Successful in 10m19s
CICD / Build Frontend Main Image (push) Successful in 5m38s
CICD / Runtime Images Failure Postmortem (push) Has been skipped
CICD / Production Images Complete (push) Successful in 5s
CICD / Runtime Black-Box Integration Tests (push) Successful in 1m29s
CICD / Integration Tests Failure Postmortem (push) Has been skipped
CICD / End-to-End Tests (push) Failing after 5m7s
CICD / E2E Tests Failure Postmortem (push) Successful in 14s

This commit is contained in:
copilotcoder
2026-07-09 01:42:27 -04:00
parent 758967e4e6
commit acb446c30f
2 changed files with 75 additions and 24 deletions
+25 -1
View File
@@ -882,6 +882,30 @@ jobs:
run: | run: |
set -euo pipefail set -euo pipefail
retry_cmd() {
attempts="${1:-5}"
backoff="${2:-2}"
shift 2
attempt=1
while [ "${attempt}" -le "${attempts}" ]; do
if "$@"; then
return 0
fi
if [ "${attempt}" -lt "${attempts}" ]; then
sleep_seconds=$((backoff * attempt))
echo "Command failed (attempt ${attempt}/${attempts}): $*"
echo "Retrying in ${sleep_seconds}s"
sleep "${sleep_seconds}"
fi
attempt=$((attempt + 1))
done
echo "Command failed after ${attempts} attempts: $*"
return 1
}
retry_registry_op() { retry_registry_op() {
op_name="$1" op_name="$1"
image_ref="$2" image_ref="$2"
@@ -912,7 +936,7 @@ jobs:
return 1 return 1
} }
echo "${PACKAGE_ACCESS_TOKEN}" | docker login "http://${GITEA_REGISTRY}" -u "${REGISTRY_USER}" --password-stdin retry_cmd 5 3 sh -c 'echo "${PACKAGE_ACCESS_TOKEN}" | docker login "http://${GITEA_REGISTRY}" -u "${REGISTRY_USER}" --password-stdin'
FRONTEND_BASE_REPO="${GITEA_REGISTRY}/darkhelm.org/plex-playlist-frontend-base" FRONTEND_BASE_REPO="${GITEA_REGISTRY}/darkhelm.org/plex-playlist-frontend-base"
FRONTEND_BASE_TAG_REF="${FRONTEND_BASE_REPO}:${HEAD_SHA}" FRONTEND_BASE_TAG_REF="${FRONTEND_BASE_REPO}:${HEAD_SHA}"
+50 -23
View File
@@ -88,14 +88,27 @@ jobs:
RENOVATE_ENDPOINT_EFFECTIVE="${RENOVATE_ENDPOINT%/}" RENOVATE_ENDPOINT_EFFECTIVE="${RENOVATE_ENDPOINT%/}"
if [[ "${RENOVATE_ENDPOINT_EFFECTIVE}" == */api/v1 ]]; then if [[ "${RENOVATE_ENDPOINT_EFFECTIVE}" == */api/v1 ]]; then
API_ENDPOINT="${RENOVATE_ENDPOINT_EFFECTIVE}" API_ENDPOINT="${RENOVATE_ENDPOINT_EFFECTIVE}"
BASE_ENDPOINT="${RENOVATE_ENDPOINT_EFFECTIVE%/api/v1}"
else else
API_ENDPOINT="${RENOVATE_ENDPOINT_EFFECTIVE}/api/v1" API_ENDPOINT="${RENOVATE_ENDPOINT_EFFECTIVE}/api/v1"
BASE_ENDPOINT="${RENOVATE_ENDPOINT_EFFECTIVE}"
fi fi
export RENOVATE_ENDPOINT="${API_ENDPOINT}" export RENOVATE_ENDPOINT="${BASE_ENDPOINT}"
echo "Renovate endpoint: ${RENOVATE_ENDPOINT}" echo "Renovate endpoint (primary): ${RENOVATE_ENDPOINT}"
echo "Renovate endpoint (fallback): ${API_ENDPOINT}"
echo "Preflight API endpoint: ${API_ENDPOINT}" echo "Preflight API endpoint: ${API_ENDPOINT}"
ENDPOINT_HOST="$(printf '%s' "${RENOVATE_ENDPOINT_EFFECTIVE}" | sed -E 's#^https?://([^/]+).*$#\1#')"
ENDPOINT_IP="$(getent hosts "${ENDPOINT_HOST}" | awk '{print $1; exit}' || true)"
DOCKER_ADD_HOST_ARG=""
if [ -n "${ENDPOINT_IP}" ]; then
DOCKER_ADD_HOST_ARG="--add-host ${ENDPOINT_HOST}:${ENDPOINT_IP}"
echo "Renovate container host mapping: ${ENDPOINT_HOST} -> ${ENDPOINT_IP}"
else
echo "⚠ Unable to resolve ${ENDPOINT_HOST} on runner; proceeding without explicit --add-host"
fi
CURL_INSECURE_FLAG="" CURL_INSECURE_FLAG=""
if [ "${RENOVATE_ALLOW_INSECURE_TLS:-false}" = "true" ]; then if [ "${RENOVATE_ALLOW_INSECURE_TLS:-false}" = "true" ]; then
echo "⚠ Renovate insecure TLS mode enabled for self-signed certificate endpoint" echo "⚠ Renovate insecure TLS mode enabled for self-signed certificate endpoint"
@@ -170,27 +183,41 @@ jobs:
unset RENOVATE_DRY_RUN unset RENOVATE_DRY_RUN
fi fi
docker run --rm \ run_renovate_with_endpoint() {
-e LOG_LEVEL \ endpoint="$1"
-e NODE_TLS_REJECT_UNAUTHORIZED \ export RENOVATE_ENDPOINT="${endpoint}"
-e RENOVATE_TOKEN \ echo "Running Renovate with endpoint: ${RENOVATE_ENDPOINT}"
-e RENOVATE_PLATFORM \
-e RENOVATE_ENDPOINT \ # shellcheck disable=SC2086
-e RENOVATE_DRY_RUN \ docker run --rm ${DOCKER_ADD_HOST_ARG} \
-e RENOVATE_GIT_AUTHOR \ -e LOG_LEVEL \
-e RENOVATE_ONBOARDING \ -e NODE_TLS_REJECT_UNAUTHORIZED \
-e RENOVATE_REQUIRE_CONFIG \ -e RENOVATE_TOKEN \
-e RENOVATE_PR_CONCURRENT_LIMIT \ -e RENOVATE_PLATFORM \
-e RENOVATE_BRANCH_CONCURRENT_LIMIT \ -e RENOVATE_ENDPOINT \
"${RENOVATE_IMAGE}" \ -e RENOVATE_DRY_RUN \
--platform "${RENOVATE_PLATFORM}" \ -e RENOVATE_GIT_AUTHOR \
--endpoint "${RENOVATE_ENDPOINT}" \ -e RENOVATE_ONBOARDING \
--git-author "${RENOVATE_GIT_AUTHOR}" \ -e RENOVATE_REQUIRE_CONFIG \
--onboarding="${RENOVATE_ONBOARDING}" \ -e RENOVATE_PR_CONCURRENT_LIMIT \
--require-config "${RENOVATE_REQUIRE_CONFIG}" \ -e RENOVATE_BRANCH_CONCURRENT_LIMIT \
--pr-concurrent-limit "${RENOVATE_PR_CONCURRENT_LIMIT}" \ "${RENOVATE_IMAGE}" \
--branch-concurrent-limit "${RENOVATE_BRANCH_CONCURRENT_LIMIT}" \ --platform "${RENOVATE_PLATFORM}" \
DarkHelm.org/plex-playlist | tee /tmp/renovate.log --endpoint "${RENOVATE_ENDPOINT}" \
--git-author "${RENOVATE_GIT_AUTHOR}" \
--onboarding="${RENOVATE_ONBOARDING}" \
--require-config "${RENOVATE_REQUIRE_CONFIG}" \
--pr-concurrent-limit "${RENOVATE_PR_CONCURRENT_LIMIT}" \
--branch-concurrent-limit "${RENOVATE_BRANCH_CONCURRENT_LIMIT}" \
DarkHelm.org/plex-playlist
}
if run_renovate_with_endpoint "${BASE_ENDPOINT}" 2>&1 | tee /tmp/renovate.log; then
:
else
echo "⚠ Renovate run failed with primary endpoint. Retrying with API endpoint form..."
run_renovate_with_endpoint "${API_ENDPOINT}" 2>&1 | tee /tmp/renovate.log
fi
echo "✓ Renovate execution completed" echo "✓ Renovate execution completed"