Skip to content

Commit

Permalink
Merge pull request #152 from Thinkscape/patch-1
Browse files Browse the repository at this point in the history
Add granular webhooks
  • Loading branch information
prodrigestivill authored Jun 20, 2024
2 parents 4d1f860 + d5e4211 commit 9f88e3b
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 11 deletions.
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,9 @@ Most variables are the same as in the [official postgres image](https://hub.dock
| SCHEDULE | [Cron-schedule](http://godoc.org/github.com/robfig/cron#hdr-Predefined_schedules) specifying the interval between postgres backups. Defaults to `@daily`. |
| TZ | [POSIX TZ variable](https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html) specifying the timezone used to evaluate SCHEDULE cron (example "Europe/Paris"). |
| WEBHOOK_URL | URL to be called after an error or after a successful backup (POST with a JSON payload, check `hooks/00-webhook` file for more info). Default disabled. |
| WEBHOOK_ERROR_URL | URL to be called in case backup fails. Default disabled. |
| WEBHOOK_PRE_BACKUP_URL | URL to be called when backup starts. Default disabled. |
| WEBHOOK_POST_BACKUP_URL | URL to be called when backup completes successfully. Default disabled. |
| WEBHOOK_EXTRA_ARGS | Extra arguments for the `curl` execution in the webhook (check `hooks/00-webhook` file for more info). |

#### Special Environment Variables
Expand Down
3 changes: 3 additions & 0 deletions alpine.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ ENV POSTGRES_DB="**None**" \
BACKUP_KEEP_MINS=1440 \
HEALTHCHECK_PORT=8080 \
WEBHOOK_URL="**None**" \
WEBHOOK_ERROR_URL="**None**" \
WEBHOOK_PRE_BACKUP_URL="**None**" \
WEBHOOK_POST_BACKUP_URL="**None**" \
WEBHOOK_EXTRA_ARGS=""

COPY hooks /hooks
Expand Down
3 changes: 3 additions & 0 deletions debian.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ ENV POSTGRES_DB="**None**" \
BACKUP_KEEP_MINS=1440 \
HEALTHCHECK_PORT=8080 \
WEBHOOK_URL="**None**" \
WEBHOOK_ERROR_URL="**None**" \
WEBHOOK_PRE_BACKUP_URL="**None**" \
WEBHOOK_POST_BACKUP_URL="**None**" \
WEBHOOK_EXTRA_ARGS=""

COPY hooks /hooks
Expand Down
55 changes: 44 additions & 11 deletions hooks/00-webhook
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ set -e
# Possible actions: error, pre-backup, post-backup
ACTION="${1}"

if [ "${WEBHOOK_URL}" != "**None**" ]; then
case "${ACTION}" in
"error")
case "${ACTION}" in
"error")
if [ "${WEBHOOK_URL}" != "**None**" ]; then
echo "Execute error webhook call to ${WEBHOOK_URL}"
curl --request POST \
--url "${WEBHOOK_URL}" \
Expand All @@ -16,11 +16,34 @@ if [ "${WEBHOOK_URL}" != "**None**" ]; then
--max-time 10 \
--retry 5 \
${WEBHOOK_EXTRA_ARGS}
;;
# "pre-backup")
# echo "Nothing to do"
# ;;
"post-backup")
fi
if [ "${WEBHOOK_ERROR_URL}" != "**None**" ]; then
echo "Execute error webhook call to ${WEBHOOK_ERROR_URL}"
curl --request POST \
--url "${WEBHOOK_ERROR_URL}" \
--header 'Content-Type: application/json' \
--data '{"status": "error"}' \
--max-time 10 \
--retry 5 \
${WEBHOOK_EXTRA_ARGS}
fi
;;

"pre-backup")
if [ "${WEBHOOK_PRE_BACKUP_URL}" != "**None**" ]; then
echo "Execute pre-backup webhook call to ${WEBHOOK_PRE_BACKUP_URL}"
curl --request POST \
--url "${WEBHOOK_PRE_BACKUP_URL}" \
--header 'Content-Type: application/json' \
--data '{"status": "pre-backup"}' \
--max-time 10 \
--retry 5 \
${WEBHOOK_EXTRA_ARGS}
fi
;;

"post-backup")
if [ "${WEBHOOK_URL}" != "**None**" ]; then
echo "Execute post-backup webhook call to ${WEBHOOK_URL}"
curl --request POST \
--url "${WEBHOOK_URL}" \
Expand All @@ -29,6 +52,16 @@ if [ "${WEBHOOK_URL}" != "**None**" ]; then
--max-time 10 \
--retry 5 \
${WEBHOOK_EXTRA_ARGS}
;;
esac
fi
fi
if [ "${WEBHOOK_POST_BACKUP_URL}" != "**None**" ]; then
echo "Execute post-backup webhook call to ${WEBHOOK_POST_BACKUP_URL}"
curl --request POST \
--url "${WEBHOOK_POST_BACKUP_URL}" \
--header 'Content-Type: application/json' \
--data '{"status": "post-backup"}' \
--max-time 10 \
--retry 5 \
${WEBHOOK_EXTRA_ARGS}
fi
;;
esac

0 comments on commit 9f88e3b

Please sign in to comment.