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 = "#: " 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