From 0a7d824a67bcd4639f36b34bbe3e95c622665246 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Fri, 15 May 2026 02:06:46 +0000 Subject: [PATCH] feat: improve api logging and summary --- entrypoint.sh | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/entrypoint.sh b/entrypoint.sh index 0164d8a..2deb17c 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -99,9 +99,17 @@ api_request() { API_RESPONSE_BODY="$(cat "${body_file}")" API_RESPONSE_HEADERS="$(cat "${headers_file}")" + API_STATUS_TEXT="$(head -n 1 "${headers_file}" | tr -d '\r' | cut -d' ' -f2-)" + API_REQUEST_ID="$( + grep -iE '^(x-gitea-request-id|x-request-id):' "${headers_file}" | tail -n 1 | cut -d':' -f2- | tr -d '\r' | sed 's/^ *//' + )" || true rm -f "${body_file}" "${headers_file}" - log "${method} ${path} -> ${API_HTTP_CODE}" + if [[ -n "${API_REQUEST_ID}" ]]; then + log "${method} ${path} -> ${API_STATUS_TEXT} request_id=${API_REQUEST_ID}" + else + log "${method} ${path} -> ${API_STATUS_TEXT}" + fi [[ "${API_HTTP_CODE}" =~ ^2 ]] } @@ -163,6 +171,10 @@ collect_package_candidates() { package_name="$(jq -r '.[0].name' <<<"${group_json}")" total_versions="$(jq 'length' <<<"${group_json}")" + PACKAGE_COUNT=$((PACKAGE_COUNT + 1)) + TOTAL_VERSION_COUNT=$((TOTAL_VERSION_COUNT + total_versions)) + + log "Package ${package_name}: total_versions=${total_versions} keep_versions=${keep_versions}" log "Package ${package_name} versions (oldest -> newest):" while IFS=$'\t' read -r version created_at; do [[ -z "${version}" ]] && continue @@ -171,9 +183,11 @@ collect_package_candidates() { if (( total_versions <= keep_versions )); then log " keep all ${total_versions} versions" + KEPT_COUNT=$((KEPT_COUNT + total_versions)) continue fi + KEPT_COUNT=$((KEPT_COUNT + keep_versions)) candidates_json="$( jq -c --argjson keep "${keep_versions}" \ 'sort_by(.created_at) | .[0:(length - $keep)]' <<<"${group_json}" @@ -183,6 +197,7 @@ collect_package_candidates() { [[ -z "${name}" ]] && continue log "Candidate to delete: package ${name} version ${version} (created: ${created_at})" printf '%s\t%s\t%s\n' "${name}" "${version}" "${created_at}" >> "${CANDIDATES_FILE}" + CANDIDATE_COUNT=$((CANDIDATE_COUNT + 1)) done < <(jq -r '.[] | [.name, .version, .created_at] | @tsv' <<<"${candidates_json}") done < <(jq -c 'group_by(.name)[]' <<<"${packages_json}") } @@ -196,6 +211,7 @@ process_candidates() { if [[ ! -s "${CANDIDATES_FILE}" ]]; then log "No delete candidates found" + log "Summary: packages=${PACKAGE_COUNT} versions=${TOTAL_VERSION_COUNT} kept=${KEPT_COUNT} candidates=0 deleted=0 skipped=0 errors=0 dry_run=${dry_run}" return 0 fi @@ -209,15 +225,19 @@ process_candidates() { fi if api_request DELETE "/api/v1/packages/${REPO_OWNER}/nuget/${name}/${version}"; then - log "Deleted package ${name} version ${version} -> ${API_HTTP_CODE}" + log "Deleted package ${name} version ${version} -> ${API_STATUS_TEXT}" deleted_count=$((deleted_count + 1)) else - log "ERROR: DELETE package ${name} version ${version} -> ${API_HTTP_CODE}" + if [[ -n "${API_REQUEST_ID}" ]]; then + log "ERROR: DELETE package ${name} version ${version} -> ${API_STATUS_TEXT} request_id=${API_REQUEST_ID}" + else + log "ERROR: DELETE package ${name} version ${version} -> ${API_STATUS_TEXT}" + fi error_count=$((error_count + 1)) fi done < "${CANDIDATES_FILE}" - log "Summary: deleted=${deleted_count} kept=${keep_versions} candidates=$(wc -l < "${CANDIDATES_FILE}") skipped=${skipped_count} errors=${error_count} dry_run=${dry_run}" + log "Summary: packages=${PACKAGE_COUNT} versions=${TOTAL_VERSION_COUNT} kept=${KEPT_COUNT} candidates=${CANDIDATE_COUNT} deleted=${deleted_count} skipped=${skipped_count} errors=${error_count} dry_run=${dry_run}" } main() { @@ -240,6 +260,10 @@ main() { CANDIDATES_FILE="$(mktemp)" export CANDIDATES_FILE + PACKAGE_COUNT=0 + TOTAL_VERSION_COUNT=0 + KEPT_COUNT=0 + CANDIDATE_COUNT=0 trap 'rm -f "${CANDIDATES_FILE}"' EXIT collect_package_candidates