Skip to content

Commit 9f88e3b

Browse files
Merge pull request #152 from Thinkscape/patch-1
Add granular webhooks
2 parents 4d1f860 + d5e4211 commit 9f88e3b

File tree

4 files changed

+53
-11
lines changed

4 files changed

+53
-11
lines changed

README.md

+3
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,9 @@ Most variables are the same as in the [official postgres image](https://hub.dock
9595
| SCHEDULE | [Cron-schedule](http://godoc.org/github.com/robfig/cron#hdr-Predefined_schedules) specifying the interval between postgres backups. Defaults to `@daily`. |
9696
| 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"). |
9797
| 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. |
98+
| WEBHOOK_ERROR_URL | URL to be called in case backup fails. Default disabled. |
99+
| WEBHOOK_PRE_BACKUP_URL | URL to be called when backup starts. Default disabled. |
100+
| WEBHOOK_POST_BACKUP_URL | URL to be called when backup completes successfully. Default disabled. |
98101
| WEBHOOK_EXTRA_ARGS | Extra arguments for the `curl` execution in the webhook (check `hooks/00-webhook` file for more info). |
99102

100103
#### Special Environment Variables

alpine.Dockerfile

+3
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ ENV POSTGRES_DB="**None**" \
3030
BACKUP_KEEP_MINS=1440 \
3131
HEALTHCHECK_PORT=8080 \
3232
WEBHOOK_URL="**None**" \
33+
WEBHOOK_ERROR_URL="**None**" \
34+
WEBHOOK_PRE_BACKUP_URL="**None**" \
35+
WEBHOOK_POST_BACKUP_URL="**None**" \
3336
WEBHOOK_EXTRA_ARGS=""
3437

3538
COPY hooks /hooks

debian.Dockerfile

+3
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ ENV POSTGRES_DB="**None**" \
4444
BACKUP_KEEP_MINS=1440 \
4545
HEALTHCHECK_PORT=8080 \
4646
WEBHOOK_URL="**None**" \
47+
WEBHOOK_ERROR_URL="**None**" \
48+
WEBHOOK_PRE_BACKUP_URL="**None**" \
49+
WEBHOOK_POST_BACKUP_URL="**None**" \
4750
WEBHOOK_EXTRA_ARGS=""
4851

4952
COPY hooks /hooks

hooks/00-webhook

+44-11
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ set -e
55
# Possible actions: error, pre-backup, post-backup
66
ACTION="${1}"
77

8-
if [ "${WEBHOOK_URL}" != "**None**" ]; then
9-
case "${ACTION}" in
10-
"error")
8+
case "${ACTION}" in
9+
"error")
10+
if [ "${WEBHOOK_URL}" != "**None**" ]; then
1111
echo "Execute error webhook call to ${WEBHOOK_URL}"
1212
curl --request POST \
1313
--url "${WEBHOOK_URL}" \
@@ -16,11 +16,34 @@ if [ "${WEBHOOK_URL}" != "**None**" ]; then
1616
--max-time 10 \
1717
--retry 5 \
1818
${WEBHOOK_EXTRA_ARGS}
19-
;;
20-
# "pre-backup")
21-
# echo "Nothing to do"
22-
# ;;
23-
"post-backup")
19+
fi
20+
if [ "${WEBHOOK_ERROR_URL}" != "**None**" ]; then
21+
echo "Execute error webhook call to ${WEBHOOK_ERROR_URL}"
22+
curl --request POST \
23+
--url "${WEBHOOK_ERROR_URL}" \
24+
--header 'Content-Type: application/json' \
25+
--data '{"status": "error"}' \
26+
--max-time 10 \
27+
--retry 5 \
28+
${WEBHOOK_EXTRA_ARGS}
29+
fi
30+
;;
31+
32+
"pre-backup")
33+
if [ "${WEBHOOK_PRE_BACKUP_URL}" != "**None**" ]; then
34+
echo "Execute pre-backup webhook call to ${WEBHOOK_PRE_BACKUP_URL}"
35+
curl --request POST \
36+
--url "${WEBHOOK_PRE_BACKUP_URL}" \
37+
--header 'Content-Type: application/json' \
38+
--data '{"status": "pre-backup"}' \
39+
--max-time 10 \
40+
--retry 5 \
41+
${WEBHOOK_EXTRA_ARGS}
42+
fi
43+
;;
44+
45+
"post-backup")
46+
if [ "${WEBHOOK_URL}" != "**None**" ]; then
2447
echo "Execute post-backup webhook call to ${WEBHOOK_URL}"
2548
curl --request POST \
2649
--url "${WEBHOOK_URL}" \
@@ -29,6 +52,16 @@ if [ "${WEBHOOK_URL}" != "**None**" ]; then
2952
--max-time 10 \
3053
--retry 5 \
3154
${WEBHOOK_EXTRA_ARGS}
32-
;;
33-
esac
34-
fi
55+
fi
56+
if [ "${WEBHOOK_POST_BACKUP_URL}" != "**None**" ]; then
57+
echo "Execute post-backup webhook call to ${WEBHOOK_POST_BACKUP_URL}"
58+
curl --request POST \
59+
--url "${WEBHOOK_POST_BACKUP_URL}" \
60+
--header 'Content-Type: application/json' \
61+
--data '{"status": "post-backup"}' \
62+
--max-time 10 \
63+
--retry 5 \
64+
${WEBHOOK_EXTRA_ARGS}
65+
fi
66+
;;
67+
esac

0 commit comments

Comments
 (0)