ntfy-action/action.yml
Eduard Wisch cdc16f3940 Feat: Composite Action fuer Ntfy Build-Benachrichtigungen
Initialer Import. Unterstuetzt start/success/failure mit passenden
Tags, Prioritaeten und optionalem Click-URL. Nutzt wget (im Runner-
Image vorhanden) und defaulted auf den zentralen Topic vk-builds.
2026-04-07 00:12:08 +02:00

97 lines
2.9 KiB
YAML

name: "Ntfy Notify"
description: "Sendet Build-Status-Benachrichtigungen an den internen Ntfy-Server (notify.data-it-solution.de)"
author: "data-it-solution"
inputs:
status:
description: "Build-Status: start, success, failure"
required: true
project:
description: "Projekt-Name (erscheint im Titel)"
required: true
topic:
description: "Ntfy-Topic (Default: vk-builds fuer alles)"
required: false
default: "vk-builds"
message:
description: "Frei waehlbarer Nachrichtentext (Default: Commit-Message)"
required: false
default: ""
ntfy_auth:
description: "Basic-Auth-Header-Wert (aus Secret NTFY_AUTH)"
required: true
ntfy_server:
description: "Ntfy-Server-URL (Default: https://notify.data-it-solution.de)"
required: false
default: "https://notify.data-it-solution.de"
run_number:
description: "Workflow-Run-Nummer (fuer den Titel)"
required: false
default: ""
click_url:
description: "URL, die beim Klick auf die Benachrichtigung geoeffnet wird"
required: false
default: ""
runs:
using: "composite"
steps:
- name: Send Ntfy Notification
shell: sh
env:
NTFY_AUTH: ${{ inputs.ntfy_auth }}
NTFY_SERVER: ${{ inputs.ntfy_server }}
NTFY_TOPIC: ${{ inputs.topic }}
STATUS: ${{ inputs.status }}
PROJECT: ${{ inputs.project }}
MSG: ${{ inputs.message }}
RUN: ${{ inputs.run_number }}
CLICK: ${{ inputs.click_url }}
run: |
# Status -> Title, Priority, Tags
case "$STATUS" in
start)
TITLE="$PROJECT Build gestartet"
PRIO="default"
TAGS="hammer_and_wrench,$PROJECT"
;;
success)
TITLE="$PROJECT Build erfolgreich"
PRIO="high"
TAGS="white_check_mark,$PROJECT"
;;
failure)
TITLE="$PROJECT Build FEHLGESCHLAGEN"
PRIO="urgent"
TAGS="x,rotating_light,$PROJECT"
;;
*)
TITLE="$PROJECT ($STATUS)"
PRIO="default"
TAGS="information_source,$PROJECT"
;;
esac
# Default-Message = "#<run>: <commit-message>" falls leer
if [ -z "$MSG" ]; then
MSG="#$RUN"
elif [ -n "$RUN" ]; then
MSG="#$RUN: $MSG"
fi
# Header zusammenbauen (Click-URL optional)
HDR_CLICK=""
if [ -n "$CLICK" ]; then
HDR_CLICK="--header=Click: $CLICK"
fi
# wget, weil in den meisten Runner-Images vorinstalliert.
# `|| true` damit ein Ntfy-Ausfall den Build nicht rot macht.
wget -q -O- \
--header="Authorization: $NTFY_AUTH" \
--header="Title: $TITLE" \
--header="Priority: $PRIO" \
--header="Tags: $TAGS" \
$HDR_CLICK \
--post-data="$MSG" \
"$NTFY_SERVER/$NTFY_TOPIC" || true