Compare commits

...
2 Commits
Author SHA1 Message Date
dresberandClaude Sonnet 5 602ff49f7b fix(notifications): use the run's actual API event, not gitea.event_name
notifications.yml is invoked via workflow_call from the caller
workflow, so inside this job gitea.event_name reports "workflow_call"
rather than the top-level event (push/schedule/...) that actually
started the run. Comparing that against the Actions API's per-run
event field (which reports the real trigger) never matched, so
previous_conclusion always stayed "unknown" and healed notifications
never fired. Now the current run's real event is captured from the API
response itself and used for the comparison, falling back to
gitea.event_name only if the current run isn't found in the scanned
history.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-08 21:08:25 +00:00
dresberandClaude Sonnet 5 467e60627b fix(python-checks): don't fail private-index probe on expected 404 at bare /simple/ root
Gitea's PyPI registry only resolves /simple/<package>/, not the bare
/simple/ index root, so the v1.11.2 probe added to give visible
diagnostics for the private-index setup step was always 404ing even
when the index and credentials were correct. This broke installs of
private Python packages during builds. The probe now only fails hard
on 401/403 (auth rejected) or an unreachable host; a plain 404 is
logged and left to pip's own resolution to confirm.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-08 04:49:00 +00:00
2 changed files with 27 additions and 4 deletions
+11 -3
View File
@@ -40,12 +40,19 @@ jobs:
repo = "${{ gitea.repository }}"
current_run_number = int("${{ gitea.run_number }}")
current_branch = "${{ gitea.ref_name }}"
# gitea.event_name is unreliable here: notifications.yml is itself called via
# workflow_call from the caller workflow, so inside this job it reports
# "workflow_call" rather than the top-level event (push/schedule/...) that
# actually started the run. The Actions API reports the real triggering event
# per run, so use that for the current run instead of trusting this context
# value. It is kept only as a last-resort fallback if the current run can't be
# found in the scanned history at all.
current_event = "${{ gitea.event_name }}"
token = os.environ["API_GITEA_TOKEN"]
print(f"Current run number: {current_run_number}")
print(f"Current branch: {current_branch}")
print(f"Current event: {current_event}")
print(f"Current event (context, may be inaccurate): {current_event}")
previous = "unknown"
# Scheduled runs can push the prior run for this branch/event beyond the
@@ -87,9 +94,10 @@ jobs:
f"event={event}"
)
# aktuellen Run überspringen
# aktuellen Run überspringen, aber dessen echtes Trigger-Event merken
if str(run_number) == str(current_run_number):
print(" -> skipping current run")
current_event = event or current_event
print(f" -> skipping current run (actual event={event})")
continue
# nur abgeschlossene Runs
+15
View File
@@ -60,6 +60,12 @@ jobs:
# Probe the configured simple index before pip resolves dependencies. The
# probe deliberately prints only scheme/host/path, never URL credentials.
# NOTE: Gitea's PyPI package registry does not serve a browsable listing at
# the bare /simple/ root (only /simple/<package>/ resolves per PEP 503), so a
# 404 against the configured URL is expected there and is not itself a fault.
# This probe therefore only fails hard on auth rejection (401/403) or an
# unreachable/erroring host; a plain 404 is logged and deferred to pip's own
# resolution, which is the real signal for whether the package is installable.
python - "$PRIVATE_INDEX_URL" <<'PY'
import base64
import sys
@@ -84,6 +90,15 @@ jobs:
if error.code in {401, 403}:
print("Authentication was rejected by the private package index.")
raise SystemExit(1)
if error.code == 404:
print(
"Bare index root returned 404; Gitea's PyPI registry does not "
"serve a listing at /simple/ (only /simple/<package>/ resolves "
"per PEP 503). Treating this as expected and deferring to pip's "
"own dependency resolution to confirm the index actually works."
)
else:
raise SystemExit(1)
except URLError as error:
print(f"Private package-index probe could not reach {safe_url}: {error.reason}")
raise SystemExit(1)