diff --git a/Dockerfile b/Dockerfile index 802ae22..d880a03 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,6 +9,7 @@ RUN set -ex; \ # duplicity software dependencies apk --no-cache add \ ca-certificates \ + curl \ gettext \ gnupg \ lftp \ @@ -101,6 +102,9 @@ ENV \ OPTIONS_CLEANUP="" \ OPTIONS_RMFULL="" \ OPTIONS_RMINCR="" \ + WEBHOOK_URL="" \ + WEBHOOK_FAIL_URL="" \ + WEBHOOK_INSECURE="" \ \ ############## # ENCRYPTION # diff --git a/README.md b/README.md index 344c075..21dc5ab 100644 --- a/README.md +++ b/README.md @@ -166,6 +166,9 @@ backup: # Webhook to be pinged on action (use "%%MSG%%" as a placeholder for a message) WEBHOOK_URL: "" + # Webhook to be pinged on failed action (use "%%MSG%%" as a placeholder for a message) + WEBHOOK_FAIL_URL: "" + # Allow self-signed certificates on webhook target WEBHOOK_INSECURE: "0" ``` diff --git a/libexec/kiwi-backup/run_command b/libexec/kiwi-backup/run_command index ec65ec2..120f91b 100755 --- a/libexec/kiwi-backup/run_command +++ b/libexec/kiwi-backup/run_command @@ -19,20 +19,25 @@ if [ -n "${GPG_PASSPHRASE}" ]; then unset GPG_PASSPHRASE fi -# run webhook -if [ -n "${WEBHOOK_URL}" ]; then - wget_args="" - if [ "${WEBHOOK_INSECURE}" = "1" ]; then - wget_args="--no-check-certificate" - fi - - WEBHOOK_URL="$(echo "${WEBHOOK_URL}" | sed "s,%%MSG%%,running%20task%20${*},g" )" - wget -O /dev/null ${wget_args} "${WEBHOOK_URL}" 1>/dev/null 2>/dev/null -fi +# run start webhook +/usr/local/libexec/kiwi-cron/run_webhook \ + "${WEBHOOK_URL}" "running task ${*}" "${WEBHOOK_INSECURE}" # hand over set -ex -exec $( \ - "${this_dir}/build_command" \ - "${@}" \ -) +eval "$( \ + "${this_dir}/build_command" \ + "${@}" \ +)" +exit_status="${?}" + +# run finish webhook +if [ "${exit_status}" -eq "0" ]; then + /usr/local/libexec/kiwi-cron/run_webhook \ + "${WEBHOOK_URL}" "task ${*} successful" "${WEBHOOK_INSECURE}" + +else + /usr/local/libexec/kiwi-cron/run_webhook \ + "${WEBHOOK_FAIL_URL:-${WEBHOOK_URL}}" "task ${*} failed, status ${exit_status}" "${WEBHOOK_INSECURE}" + +fi diff --git a/libexec/kiwi-backup/run_webhook b/libexec/kiwi-backup/run_webhook new file mode 100755 index 0000000..0447046 --- /dev/null +++ b/libexec/kiwi-backup/run_webhook @@ -0,0 +1,18 @@ +#!/bin/sh + +message="$(echo "${2}" | sed "s,\s,%20,g" )" +webhook_url="$(echo "${1}" | sed "s,%%MSG%%,${message},g" )" +webhook_insecure="${3:-0}" + + +if [ -z "${webhook_url}" ]; then + return 1 +fi + + +curl_args="" +if [ "${webhook_insecure}" = "1" ]; then + curl_args="--insecure" +fi + +curl ${curl_args} "${webhook_url}" 1>/dev/null 2>/dev/null