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>
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user