Compare commits

...
1 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
+11 -3
View File
@@ -40,12 +40,19 @@ jobs:
repo = "${{ gitea.repository }}" repo = "${{ gitea.repository }}"
current_run_number = int("${{ gitea.run_number }}") current_run_number = int("${{ gitea.run_number }}")
current_branch = "${{ gitea.ref_name }}" 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 }}" current_event = "${{ gitea.event_name }}"
token = os.environ["API_GITEA_TOKEN"] token = os.environ["API_GITEA_TOKEN"]
print(f"Current run number: {current_run_number}") print(f"Current run number: {current_run_number}")
print(f"Current branch: {current_branch}") print(f"Current branch: {current_branch}")
print(f"Current event: {current_event}") print(f"Current event (context, may be inaccurate): {current_event}")
previous = "unknown" previous = "unknown"
# Scheduled runs can push the prior run for this branch/event beyond the # Scheduled runs can push the prior run for this branch/event beyond the
@@ -87,9 +94,10 @@ jobs:
f"event={event}" f"event={event}"
) )
# aktuellen Run überspringen # aktuellen Run überspringen, aber dessen echtes Trigger-Event merken
if str(run_number) == str(current_run_number): 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 continue
# nur abgeschlossene Runs # nur abgeschlossene Runs