Just try it!
make web # ;)
You are now exposing this projects Makefile
to the web!
$ curl http://localhost/hello-world
{"status":0}
You can set environment variables, all vars are uppercased by default. Dont forget HTTP URL encoding!
curl http://localhost/hello-world\?GREET\=Anthony
curl "http://localhost/hello-world?GREET=Anthony"
curl "http://localhost/hello-world?greet=Anthony"
Shut up and get me running!
Mount local directory into docker swarm:
ssh root@server
docker swarm init
wget https://raw.githubusercontent.com/expelledboy/make-webhooks/master/Makefile
make HOSTNAME=webhooks.example.com start-webhooks
OR
Build a docker image with your custom Makefile.
FROM expelledboy/make-webhooks:latest
RUN apk add --no-cache jq # Makefile deps
COPY Makefile /webhook/Makefile
docker build -t my-webhooks .
docker run -it --rm -p 3000:3000 my-webhooks
You can use the webhooks return status as an exit code in another script.
#!/bin/bash
if [ "$1" -eq "run-webhook" ]; then
exit $(curl -s http://localhost/crash | jq '.status')
fi
$ ./script.sh; echo $?
0
$ ./script.sh run-webhook; echo $?
2
Example usage in the command line.
$ `exit $(curl -s http://localhost/crash | jq '.status')`; echo $?
2
But best yet, in a make target!
run-webhook:
@curl -fs http://localhost/crash
$ make run-webhook
make: *** [Makefile:86: run-webhook] Error 22
We match the Bearer token in the Authorization header, either with environment
variable SECRET
, or the contents of the file located at /webhooks/SECRET
.
$ echo mySecret > SECRET
$ curl http://localhost/hello-world
Unauthorized
$ curl -H 'Authorization: Bearer mySecret' http://localhost/hello-world
{"status":0}
Can even do key rotations!
$ echo -n myNewSecret > SECRET
$ curl -H 'Authorization: Bearer mySecret' http://localhost/hello-world
Unauthorized
$ curl -H 'Authorization: Bearer myNewSecret' http://localhost/hello-world
{"status":0}