|
|
|
|
@@ -180,7 +180,7 @@ jobs:
|
|
|
|
|
RENOVATE_NODE_ARGS: --max-old-space-size=768
|
|
|
|
|
RENOVATE_OSV_VULNERABILITY_ALERTS: "false"
|
|
|
|
|
RENOVATE_FETCH_CHANGELOGS: "off"
|
|
|
|
|
LOG_LEVEL: info
|
|
|
|
|
LOG_LEVEL: debug
|
|
|
|
|
run: |
|
|
|
|
|
set -euo pipefail
|
|
|
|
|
|
|
|
|
|
@@ -401,9 +401,11 @@ jobs:
|
|
|
|
|
# Manual workflow dispatch should execute immediately, regardless of repository schedule windows.
|
|
|
|
|
if [ "${GITHUB_EVENT_NAME:-}" = "workflow_dispatch" ]; then
|
|
|
|
|
export RENOVATE_IGNORE_SCHEDULE="true"
|
|
|
|
|
echo "✓ Manual run detected: ignoring Renovate schedule constraints"
|
|
|
|
|
export RENOVATE_SCHEDULE="at any time"
|
|
|
|
|
echo "✓ Manual run detected: forcing Renovate outside schedule windows"
|
|
|
|
|
else
|
|
|
|
|
unset RENOVATE_IGNORE_SCHEDULE
|
|
|
|
|
unset RENOVATE_SCHEDULE
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Multi-batch runs must not prune branches created by earlier batches.
|
|
|
|
|
@@ -412,22 +414,16 @@ jobs:
|
|
|
|
|
run_renovate_with_endpoint() {
|
|
|
|
|
endpoint="$1"
|
|
|
|
|
enabled_managers="$2"
|
|
|
|
|
batch_label="$3"
|
|
|
|
|
batch_node_args="${RENOVATE_NODE_ARGS}"
|
|
|
|
|
batch_pr_limit="${RENOVATE_PR_CONCURRENT_LIMIT}"
|
|
|
|
|
batch_branch_limit="${RENOVATE_BRANCH_CONCURRENT_LIMIT}"
|
|
|
|
|
|
|
|
|
|
if [ "${batch_label}" = "npm" ]; then
|
|
|
|
|
batch_node_args="--max-old-space-size=1536"
|
|
|
|
|
batch_pr_limit="1"
|
|
|
|
|
batch_branch_limit="1"
|
|
|
|
|
fi
|
|
|
|
|
single_pass_node_args="${RENOVATE_NODE_ARGS}"
|
|
|
|
|
single_pass_pr_limit="${RENOVATE_PR_CONCURRENT_LIMIT}"
|
|
|
|
|
single_pass_branch_limit="${RENOVATE_BRANCH_CONCURRENT_LIMIT}"
|
|
|
|
|
|
|
|
|
|
export RENOVATE_ENDPOINT="${endpoint}"
|
|
|
|
|
echo "Running Renovate batch '${batch_label}' with endpoint: ${RENOVATE_ENDPOINT}"
|
|
|
|
|
echo "Enabled managers for '${batch_label}': ${enabled_managers}"
|
|
|
|
|
echo "Node args for '${batch_label}': ${batch_node_args}"
|
|
|
|
|
echo "PR/branch limits for '${batch_label}': ${batch_pr_limit}/${batch_branch_limit}"
|
|
|
|
|
echo "Running Renovate single pass with endpoint: ${RENOVATE_ENDPOINT}"
|
|
|
|
|
echo "Enabled managers: ${enabled_managers}"
|
|
|
|
|
echo "Node args: ${single_pass_node_args}"
|
|
|
|
|
echo "PR/branch limits: ${single_pass_pr_limit}/${single_pass_branch_limit}"
|
|
|
|
|
|
|
|
|
|
# shellcheck disable=SC2086
|
|
|
|
|
docker run --rm ${DOCKER_ADD_HOST_ARG} \
|
|
|
|
|
@@ -448,12 +444,13 @@ jobs:
|
|
|
|
|
-e RENOVATE_GIT_AUTHOR \
|
|
|
|
|
-e RENOVATE_ONBOARDING \
|
|
|
|
|
-e RENOVATE_REQUIRE_CONFIG \
|
|
|
|
|
-e RENOVATE_PR_CONCURRENT_LIMIT="${batch_pr_limit}" \
|
|
|
|
|
-e RENOVATE_BRANCH_CONCURRENT_LIMIT="${batch_branch_limit}" \
|
|
|
|
|
-e RENOVATE_NODE_ARGS="${batch_node_args}" \
|
|
|
|
|
-e RENOVATE_PR_CONCURRENT_LIMIT="${single_pass_pr_limit}" \
|
|
|
|
|
-e RENOVATE_BRANCH_CONCURRENT_LIMIT="${single_pass_branch_limit}" \
|
|
|
|
|
-e RENOVATE_NODE_ARGS="${single_pass_node_args}" \
|
|
|
|
|
-e RENOVATE_OSV_VULNERABILITY_ALERTS \
|
|
|
|
|
-e RENOVATE_FETCH_CHANGELOGS \
|
|
|
|
|
-e RENOVATE_IGNORE_SCHEDULE \
|
|
|
|
|
-e RENOVATE_SCHEDULE \
|
|
|
|
|
-e RENOVATE_PRUNE_STALE_BRANCHES \
|
|
|
|
|
-e RENOVATE_ENABLED_MANAGERS="${enabled_managers}" \
|
|
|
|
|
--entrypoint /bin/sh \
|
|
|
|
|
@@ -469,30 +466,27 @@ jobs:
|
|
|
|
|
renovate --platform "${RENOVATE_PLATFORM}" --endpoint "${RENOVATE_ENDPOINT}" --git-url "${RENOVATE_GIT_URL}" --git-author "${RENOVATE_GIT_AUTHOR}" --onboarding="${RENOVATE_ONBOARDING}" --pr-concurrent-limit "${RENOVATE_PR_CONCURRENT_LIMIT}" --branch-concurrent-limit "${RENOVATE_BRANCH_CONCURRENT_LIMIT}" --osv-vulnerability-alerts="${RENOVATE_OSV_VULNERABILITY_ALERTS}" --enabled-managers "${RENOVATE_ENABLED_MANAGERS}" DarkHelm.org/plex-playlist'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
run_batch_with_fallback() {
|
|
|
|
|
run_single_pass_with_fallback() {
|
|
|
|
|
enabled_managers="$1"
|
|
|
|
|
batch_label="$2"
|
|
|
|
|
|
|
|
|
|
if run_renovate_with_endpoint "${BASE_ENDPOINT}" "${enabled_managers}" "${batch_label}" 2>&1 | tee -a /tmp/renovate.log; then
|
|
|
|
|
if run_renovate_with_endpoint "${BASE_ENDPOINT}" "${enabled_managers}" 2>&1 | tee -a /tmp/renovate.log; then
|
|
|
|
|
return 0
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
primary_status=$?
|
|
|
|
|
if [ "${primary_status}" -eq 137 ] || tail -n 400 /tmp/renovate.log | grep -qE '(^|[[:space:]])Killed($|[[:space:]])|exitcode '\''137'\''' ; then
|
|
|
|
|
echo "❌ Renovate batch '${batch_label}' terminated by OOM/kill signal on primary endpoint; skipping endpoint retry"
|
|
|
|
|
echo "❌ Renovate single pass terminated by OOM/kill signal on primary endpoint; skipping endpoint retry"
|
|
|
|
|
return "${primary_status}"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
echo "⚠ Renovate batch '${batch_label}' failed with primary endpoint. Retrying with API endpoint form..."
|
|
|
|
|
run_renovate_with_endpoint "${API_ENDPOINT}" "${enabled_managers}" "${batch_label}" 2>&1 | tee -a /tmp/renovate.log
|
|
|
|
|
echo "⚠ Renovate single pass failed with primary endpoint. Retrying with API endpoint form..."
|
|
|
|
|
run_renovate_with_endpoint "${API_ENDPOINT}" "${enabled_managers}" 2>&1 | tee -a /tmp/renovate.log
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
: > /tmp/renovate.log
|
|
|
|
|
|
|
|
|
|
# Run low-memory batches sequentially to keep peak usage below constrained runner limits.
|
|
|
|
|
run_batch_with_fallback "docker-compose,dockerfile" "containers"
|
|
|
|
|
run_batch_with_fallback "github-actions,pep621" "python-and-actions"
|
|
|
|
|
run_batch_with_fallback "npm" "npm"
|
|
|
|
|
# Run Renovate once across all enabled managers.
|
|
|
|
|
run_single_pass_with_fallback "docker-compose,dockerfile,github-actions,npm,pep621"
|
|
|
|
|
|
|
|
|
|
echo "✓ Renovate execution completed"
|
|
|
|
|
|
|
|
|
|
|