From 26fe13d440d516a6760750d586d665b7bc010e4f Mon Sep 17 00:00:00 2001 From: Tito Sacchi Date: Mon, 20 Jun 2022 16:24:56 +0200 Subject: [PATCH] New blogpost \o/ on CD with GitHub Webhooks --- posts/2022-06-20-dumb-cd-webhooks.md | 441 ++++++++++++++++++ resources/dumb-cd-webhooks/handle-webhook.sh | 158 +++++++ .../dumb-cd-webhooks/socat-httpie-success.jpg | Bin 0 -> 82663 bytes 3 files changed, 599 insertions(+) create mode 100644 posts/2022-06-20-dumb-cd-webhooks.md create mode 100755 resources/dumb-cd-webhooks/handle-webhook.sh create mode 100644 resources/dumb-cd-webhooks/socat-httpie-success.jpg diff --git a/posts/2022-06-20-dumb-cd-webhooks.md b/posts/2022-06-20-dumb-cd-webhooks.md new file mode 100644 index 0000000..be2bf6d --- /dev/null +++ b/posts/2022-06-20-dumb-cd-webhooks.md @@ -0,0 +1,441 @@ +--- +title: dumb-cd-webhooks +displaytitle: A dumb CD solution with GitHub Webhooks and a shell script +summary: 'Or: how to write a webserver in Bash' +tags: devops, ci, cd, git + +--- + +I've been working on the backend of a school project (it will become public +soon) for the last few weeks. It's a Python 3.10 + +[FastAPI](https://fastapi.tiangolo.com) + +[psycopg3](https://www.psycopg.org/psycopg3/) API backed by a PostgreSQL DB. Our +server is a plain Ubuntu 20.04 box on Hetzner and our deployment is as simple as +a Python venv and a systemd service (with socket activation!). No Docker, no +Kubernetes, no supervisord. We follow the [KISS +philosophy](https://wiki.archlinux.org/title/Arch_terminology#KISS). To be +perfectly honest, I wanted to install Arch on our server, but we agreed that +Ubuntu is a bit more reliable. + +We're using GitHub Actions as a CI solution and it works well; it checks our +code, builds a wheel and stores it as a build artifact. And something that I +find *really* boring and time-consuming is manually downloading the wheel on +our server and updating the Python venv. Wait, isn't this problem commonly +solved with ✨ *CD* ✨? + +Ok, there are tons of complete CD solutions for containerized and advanced +workloads, using Docker, Kubernetes, AWS... But I'm a dumb idiot with some +decent scripting knowledge and no will to learn any of these technologies. How +can I start a script whenever CI builds a new wheel on master? Enter [*GitHub +Webhooks*][gh-webhooks]! +Basically GH will send a HTTP POST request to a chosen endpoint whenever certain +events happen. In particular, we are interested in the `workflow_run` event. + +If you create a webhook on GitHub it will ask you for a secret to be used to +secure requests to your endpoint. Just choose a random string (`openssl rand +-hex 8`) and write it down -- it will be used in our script to check that +requests are actually signed by GitHub. + +## Who needs an HTTP library to process requests? + +I decided to take a very simple approach: 1 successful CI build = 1 script run. +This means 1 webhook request = 1 script run. The simplest way that I came up +with to do this is with a *systemd socket-activated Bash script*. Everytime +systemd will receive a connection on a socket it will start a custom process +that will handle the connection: this is the way most +[`inetd`](https://en.wikipedia.org/wiki/Inetd)-style daemons work. + +**UNIX history recap:** (feel free to skip!) Traditional UNIX network daemons +(i.e., network services) would `accept()` connections on managed sockets and +then `fork()` a different process to handle each of these. With socket +activation (as implemented by inetd, xinetd or systemd) a single daemon (or +directly the init system!) listens on the appropriate ports for *all services* +on the machine and does the job of `accept`ing connections. Each connection will +be handled by a different process, launched as a child of the socket manager. +This minimizes load if the service is not always busy, because there won't be +any processes stuck waiting on sockets. Everytime a connection is closed the +corresponding process exits and the system remains in a clean state. + +The socket manager is completely protocol-agnostic: it is up to the +service-specific processes to implement the appropriate protocols. In our case, +systemd will start our Bash script and pass the socket as file descriptors. This +means that our Bash script will have to *talk HTTP*![^overengineering] + +## How do we do this? + +### systemd and socket activation + +Let's start by configuring systemd. The [systemd.socket man +page](https://man7.org/linux/man-pages/man5/systemd.socket.5.html). We have to +create a socket unit and a corresponding service unit template. I'll use +`cd-handler` as the unit name. I will setup systemd to listen on the UNIX domain +socket `/run/myapp-cd.sock` that you can point your reverse proxy (e.g. NGINX) +to. TCP port 8027 is mostly for debugging purposes - but if you don't need HTTPS +you can use systemd's socket directly as the webhook endpoint.[^socat] + +**Socket unit:** + +``` +# /etc/systemd/system/cd-handler.socket +[Unit] +Description=Socket for CD webhooks + +[Socket] +ListenStream=/run/myapp-cd.sock +ListenStream=0.0.0.0:8027 +Accept=yes + +[Install] +WantedBy=sockets.target +``` + +**Service template unit:** + +``` +# /etc/systemd/system/cd-handler@.socket +[Unit] +Description=GitHub webhook handler for CD +Requires=cd-handler.socket + +[Service] +Type=simple +ExecStart=/var/lib/cd/handle-webhook.sh # path to our Bash webhook handler +StandardInput=socket +StandardOutput=socket +StandardError=journal +TimeoutStopSec=5 + +[Install] +WantedBy=multi-user.target +``` + +`Accept=yes` will make systemd start a process for each connection. Create a +Bash script in `/var/lib/cd/handle-webhook.sh`; for now we will only answer +`204 No Content` to every possible request. Remember to make the script +executable (`chmod +x`). We will communicate with the socket using standard +streams (stdin/stdout; stderr will be sent to the system logs). + +```bash +#!/bin/bash +# /var/lib/cd/handle-webhook.sh + +printf "HTTP/1.1 204 No Content\r\n" +printf "Server: TauroServer CI/CD\r\n" +printf "Connection: close\r\n" +printf "\r\n" +``` + +`systemctl daemon-reload && systemctl enable --now cd-handler.socket` and you +are ready to go. Test our dumb HTTP server with `curl -vv http://127.0.0.1:8027` +or if you're using the awesome +[HTTPie](https://httpie.io/docs/cli/main-features) `http -v :8027`. If you're +successfully receiving a 204, we have just ~~ignored~~ processed a HTTP request +with Bash ^^ + +### Parsing the HTTP request + +The anatomy of HTTP requests and responses is standardised in [RFC +2616][rfc2616], in sections 5 and 6 respectively. + +UNIX systems come with powerful text-processing utilities. Bash itself has +[parameter expansion][bash-expansion] features that will be useful in processing +the HTTP request and we will use [jq][jq] to extract +the fields we're interested in from the JSON payload. + +We will build our script step by step. I'll define a function to log data (in my +case, it will use `systemd-cat` to write directly to the journal; you can +substitute its body to adapt it to your needs) and another function to send a +response. `send_response` takes two parameters: the first one is the status code +followed by its description (e.g. `204 No Content`) and the second one is the +response body (optionally empty). We're using `wc` to count characters in the +body (we're subtracting 1 for the extra `\n` that Bash sends to `wc`). + +```bash +#!/bin/bash +set -euo pipefail # Good practice! + +function log { + systemd-cat -t 'GitHub webhook handler' $@ +} + +function send_response { + printf "Sending response: %s\n" "$1" | log -p info + printf "HTTP/1.1 %s\r\n" "$1" + printf "Server: TauroServer CI/CD\r\n" + printf "Connection: close\r\n" + printf "Content-Type: application/octet-stream\r\n" + printf "Content-Length: $(($(wc -c <<<"$2") - 1))\r\n" + printf "\r\n" + printf '%s' "$2" +} +``` + +If you add `send_response "200 OK" "Hello World!"` as a last line, you should be +able to get a 200 response with cURL or HTTPie! You can also test webhooks from +the GitHub web UI and see if an OK response is received as expected. We are not +sending the `Date` response headers that *should* be set according to RFC 2616. + +![socat and HTTPie talking nicely to each +other.](/resources/dumb-cd-webhooks/socat-httpie-success.jpg) + +**Parsing the request line.** As easy as `read method path version`. There will +probably be a pending `\r` on `version` but we don't care this much (we will +assume HTTP/1.1 everywhere ^^). + +**Parsing headers.** Headers follow immediately the request line. Expert bash +users would probably use an associative array to store request headers; we will +just use a `case` statement to extract headers we're interested in. We split +each line on `:` by setting the special variable `IFS`, input field separator, +that defaults to a space. `tr` removes pending `\r\n` and brace substitution is +used to remove the space that follows `:` in each header line. + +```bash +content_length=0 +delivery_id=none +ghsig=none +event_type=none + +while IFS=: read -r key val; do + [[ "$key" == "$(printf '\r\n')" ]] && break; + val=$(tr -d '\r\n' <<<"$val") + case "$key" in + "Content-Length") + content_length="${val# }" + ;; + "X-GitHub-Delivery") + delivery_id="${val# }" + ;; + "X-GitHub-Event") + event_type="${val# }" + ;; + "X-Hub-Signature-256") + # This will be trimmed later when comparing to OpenSSL's HMAC + ghsig=$val + ;; + *) + ;; + esac + printf 'Header: %s: %s\n' "$key" "$val" | log -p debug +done +``` + +**Reading body and checking HMAC signature.** GitHub sends a hex-encoded +HMAC-SHA-256 signature of the JSON body as the [`X-Hub-Signature-256` +header][gh-securing-webhooks], signed with the secret chosen while creating the +webhook. Without this layer of security, anyone could send a POST and trigger CD +scripts, maybe making us download malicious builds. In a shell script the +easiest way to calculate an HMAC is with the `openssl` command-line tool. We are +using `dd` to read an exact amount of bytes from stdin and the body is passed to +`openssl` with a pipe to avoid sending trailing newlines (using direct +redirection, i.e., `<<<` did not work for me). Brace expansion is used to split +strings. Place your WebHook secret in the `GITHUB_WEBHOOK_SECRET` variable and +set `ENFORCE_HMAC` to something different from 0 (I thought disabling signature +checking could be useful for debugging purposes). You can now play with +cURL/HTTPie/*[insert your favourite HTTP client here]* to see if you receive 401 +Unauthorized responses as expected. + +```bash +printf "Trying to read request content... %s bytes\n" "$content_length" | log -p info +content=$(dd bs=1 count="$content_length" 2> >(log -p debug) ) +mysig=$(printf '%s' "$content" | openssl dgst -sha256 -hmac $GITHUB_WEBHOOK_SECRET) +if [[ "${mysig#* }" == "${ghsig#*=}" ]]; then + log -p notice <<<"HMAC signatures match, proceeding further." +else + log -p warning <<<"HMAC signatures do not match! Request is not authenticated!" + if [[ $ENFORCE_HMAC != 0 ]]; then + send_response "401 Unauthorized" "Provide signature as HTTP header." + log -p err <<<"Exiting now because HMAC signature enforcing is required." + exit 1 + fi +fi +``` + +**Sending the HTTP response.** We will send an appropriate response to response +to GitHub with the function defined earlier. + +```bash +if [[ "$event_type" == "none" ]]; then + send_response "400 Bad Request" "Please provide event type as HTTP header." + log -p err <<<"X-GitHub-Event header was not provided." + exit 1 +fi +if [[ "$delivery_id" == "none" ]]; then + send_response "400 Bad Request" "Please provide delivery ID as HTTP header." + log -p err <<<"X-GitHub-Delivery header was not provided." + exit 1 +fi + +printf "GitHub Delivery ID: %s\n" "$delivery_id" | log -p info +printf "GitHub Event type: %s\n" "$event_type" | log -p info +case "$event_type" in + "workflow_run") + send_response "200 OK" "Acknowledged workflow run!" + ;; + *) + send_response "204 No Content" "" + exit 0 + ;; +esac +``` + +The "HTTP server" part of the script is complete! You can also test this by +asking GitHub to resend past webhooks from the web UI. + +### Parsing the JSON body and downloading artifacts + +**JSON body.** The JSON schema of GitHub webhooks payloads can be found on the +[official GH docs][gh-webhook-payloads]. We will use [jq][jq] to parse JSON and +with its `-r` flag we will print the fields we're interested on standard output, +each on a separate line. Its stream can be passed to the `read` builtin with +`IFS` set to `\n`. The `|| true` disjunction at the end of the command makes the +script continue with the execution even if jq doesn't find some of the fields we +asked it to extract (e.g., in event that signal the start of a workflow, +`artifacts_url` is not present). + +I want to run CD workflows only on the main branch (`main`, `master`, ...), so I +added a check against the variable `MAIN_BRANCH` that you can configure at the +top of the script. GitHub sends `workflow_run` events even when CI workflows +start, but we're only interested in running a custom action when a workflow +succeeds. + +```bash +IFS=$'\n' read -r -d '' action branch workflow_status \ + name conclusion url artifacts \ + commit message author < <( + jq -r '.action, + .workflow_run.head_branch, + .workflow_run.status, + .workflow_run.name, + .workflow_run.conclusion, + .workflow_run.html_url, + .workflow_run.artifacts_url, + .workflow_run.head_commit.id, + .workflow_run.head_commit.message, + .workflow_run.head_commit.author.name' <<<"$content") || true + +printf 'Workflow run "%s" %s! See %s\n' "$name" "$workflow_status" "$url" | log -p notice +printf 'Head commit SHA: %s\n' "$commit" | log -p info +printf 'Head commit message: %s\n' "$message" | log -p info +printf 'Commit author: %s\n' "$author" | log -p info + +if [[ "$action" != "completed" ]] \ + || [[ "$conclusion" != "success" ]] \ + || [[ "$branch" != "$MAIN_BRANCH" ]]; + then exit 0 +fi +log -p notice <<<"Proceeding with continuous delivery!" +``` + +**Build artifacts.** Before running the custom CD script that depends from your +specific deployments scenario, we will download all artifacts build on GitHub +Actions during CI. For example, in our Dart/Flutter webapp this could include +the built website, with Dart already compiled to JavaScript. In the case of our +Python backend the artifact is a Python wheel. This webhook script handler is +completely language-agnostic though, meaning that you can use it with whatever +language or build system you want. + +We will download and extract all artifacts in a temporary directory and then +pass its path as an argument to the CD script, with a bunch of other useful +information such as the branch name and the commit SHA. The function +`download_artifacts` downloads and extracts the ZIP files stored on GitHub using +the [Artifacts API][gh-artifacts-api]. It iterates on the JSON array and +extracts appropriate fields using jq's array access syntax. GitHub returns a 302 +temporary redirect when it receives a GET on the `archive_download_url` advised +in the artifact body, so we use cURL's `-L` to make it follow redirects. + +```bash +function download_artifacts { + # $1: URL + # $2: directory to download artifacts to + pushd "$2" &>/dev/null + artifacts_payload=$(curl --no-progress-meter -u "$GITHUB_API_USER:$GITHUB_API_TOKEN" "$1" 2> >(log -p debug)) + artifacts_amount=$(jq -r '.total_count' <<<"$artifacts_payload") + + for i in $(seq 1 "$artifacts_amount"); do + printf 'Downloading artifact %s/%s...\n' "$i" "$artifacts_amount" | log -p info + name=$(jq -r ".artifacts[$((i - 1))].name" <<<"$artifacts_payload") + url=$(jq -r ".artifacts[$((i - 1))].archive_download_url" <<<"$artifacts_payload") + printf 'Artifact name: "%s" (downloading from %s)\n' "$name" "$url" | log -p info + + tmpfile=$(mktemp) + printf 'Downloading ZIP to %s\n' "$tmpfile" | log -p debug + curl --no-progress-meter -L -u "$GITHUB_API_USER:$GITHUB_API_TOKEN" --output "$tmpfile" "$url" 2> >(log -p debug) + + mkdir "$name" + printf 'Unzipping into %s...\n' "$2/$name" | log -p debug + unzip "$tmpfile" -d "$2/$name" | log -p debug + rm "$tmpfile" + done + popd &>/dev/null +} + +artifacts_dir=$(mktemp -d) +printf 'Downloading artifacts to %s...\n' "$artifacts_dir" | log -p info +download_artifacts "$artifacts" "$artifacts_dir" +``` + +**Final step: running your CD script!** If you aliased `log` to `systemd-cat` as I +did above, the `-t` flag will select a different identifier, to make the output +of the custom script stand out from the garbage of our webhook handler in the +system journal. Again, configure `$CD_SCRIPT` appropriately; it will be run from +the directory specified above in the systemd unit file and it will receive the +path to the directory containing the downloaded artifacts as an argument. +**Note**: it will run with root privileges unless specified otherwise in the +service unit file! + +```bash +printf 'Running CD script!\n' | log -p notice +$CD_SCRIPT "$artifacts_dir" "$branch" "$commit" 2>&1 | log -t "CD script" -p info +``` + +For example, our Python backend CD script looks something like this: + +```bash +cd "$1" +systemctl stop my-awesome-backend.service +source /var/lib/my-backend/virtualenv/bin/activate +pip3 install --no-deps --force **/*.whl +systemctl start my-awesome-backend.service +``` + +**Bonus points for cleanup** :) Remove the tmpdir created earlier to store +artifacts: + +```bash +printf 'Deleting artifacts directory...\n' | log -p info +rm -r "$artifacts_dir" +``` + +## Conclusion + +You can find the complete script +[here](/resources/dumb-cd-webhooks/handle-webhook.sh). It's 158LoC, not that +much, and it's very flexible. There's room for improvement; e.g., selecting +different scripts on different branches. Let me know if you extend this script +or use a similar approach! + + +[gh-webhooks]: https://docs.github.com/en/developers/webhooks-and-events/webhooks/about-webhooks + +[rfc2616]: https://datatracker.ietf.org/doc/html/rfc2616 + +[bash-expansion]: https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html + +[jq]: https://stedolan.github.io/jq/ + +[gh-securing-webhooks]: https://docs.github.com/en/developers/webhooks-and-events/webhooks/securing-your-webhooks#validating-payloads-from-github + +[gh-webhook-payloads]: https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads + +[gh-artifacts-api]: https://docs.github.com/en/rest/actions/artifacts + +[^overengineering]: At this point, you might be wondering whether it is worth + it. It probably isn't, and the simplest solution could be a 100LoC Python + + FastAPI script to handle webhooks. But I *really* wanted to do this with basic + UNIX tools. + +[^socat]: You can also use `socat` to do what systemd is doing for us if you + want to test your script on your local machine: `socat + TCP-LISTEN:8027,reuseaddr,fork SYSTEM:/path/to/handle-webhook.sh`. + +[comment]: # vim: ts=2:sts=2:sw=2:et:nojoinspaces:tw=80 diff --git a/resources/dumb-cd-webhooks/handle-webhook.sh b/resources/dumb-cd-webhooks/handle-webhook.sh new file mode 100755 index 0000000..6cfabce --- /dev/null +++ b/resources/dumb-cd-webhooks/handle-webhook.sh @@ -0,0 +1,158 @@ +#!/bin/bash +set -euo pipefail + +GITHUB_WEBHOOK_SECRET=REDACTED +GITHUB_API_TOKEN=REDACTED +GITHUB_API_USER=REDACTED +MAIN_BRANCH=master +CD_SCRIPT="/var/lib/path-to-your-backend/continuous-delivery.sh" +ENFORCE_HMAC=1 + +function log { + systemd-cat -t 'GitHub webhook handler' $@ +} + +function send_response { + printf "Sending response: %s\n" "$1" | log -p info + printf "HTTP/1.1 %s\r\n" "$1" + printf "Server: TauroServer CI/CD\r\n" + printf "Connection: close\r\n" + printf "Content-Type: application/octet-stream\r\n" + printf "Content-Length: $(($(wc -c <<<"$2") - 1))\r\n" + printf "\r\n" + printf '%s' "$2" +} + +content_length=0 +delivery_id=none +ghsig=none +event_type=none + +read method path version +printf "Request method: $method\n" | log -p debug +printf "Request path: $path\n" | log -p debug +printf "HTTP version: $version\n" | log -p debug + +while IFS=: read -r key val; do + [[ "$key" == "$(printf '\r\n')" ]] && break; + val=$(tr -d '\r\n' <<<"$val") + case "$key" in + "Content-Length") + content_length="${val# }" + ;; + "X-GitHub-Delivery") + delivery_id="${val# }" + ;; + "X-GitHub-Event") + event_type="${val# }" + ;; + "X-Hub-Signature-256") + ghsig=$val + ;; + *) + ;; + esac + printf 'Header: %s: %s\n' "$key" "$val" | log -p debug +done + +printf "Trying to read request content... %s bytes\n" "$content_length" | log -p info +content=$(dd bs=1 count="$content_length" 2> >(log -p debug) ) +# xxd <<<"$content" >&2 +mysig=$(printf '%s' "$content" | openssl dgst -sha256 -hmac $GITHUB_WEBHOOK_SECRET) +if [[ "${mysig#* }" == "${ghsig#*=}" ]]; then + log -p notice <<<"HMAC signatures match, proceeding further." +else + log -p warning <<<"HMAC signatures do not match! Request is not authenticated!" + if [[ $ENFORCE_HMAC != 0 ]]; then + send_response "401 Unauthorized" "Provide signature as HTTP header." + log -p err <<<"Exiting now because HMAC signature enforcing is required." + exit 1 + fi +fi + +if [[ "$event_type" == "none" ]]; then + send_response "400 Bad Request" "Please provide event type as HTTP header." + log -p err <<<"X-GitHub-Event header was not provided." + exit 1 +fi +if [[ "$delivery_id" == "none" ]]; then + send_response "400 Bad Request" "Please provide delivery ID as HTTP header." + log -p err <<<"X-GitHub-Delivery header was not provided." + exit 1 +fi + + +printf "GitHub Delivery ID: %s\n" "$delivery_id" | log -p info +printf "GitHub Event type: %s\n" "$event_type" | log -p info +case "$event_type" in + "ping") + send_response "204 No Content" "" + exit 0 + ;; + "workflow_run") + send_response "200 OK" "Acknowledged workflow run!" + ;; + *) + send_response "204 No Content" "" + exit 0 + ;; +esac + +IFS=$'\n' read -r -d '' action branch workflow_status name conclusion url artifacts \ + commit message author < <( + jq -r '.action, + .workflow_run.head_branch, + .workflow_run.status, + .workflow_run.name, + .workflow_run.conclusion, + .workflow_run.html_url, + .workflow_run.artifacts_url, + .workflow_run.head_commit.id, + .workflow_run.head_commit.message, + .workflow_run.head_commit.author.name' <<<"$content") || true + +printf 'Workflow run "%s" %s! See %s\n' "$name" "$workflow_status" "$url" | log -p notice +printf 'Head commit SHA: %s\n' "$commit" | log -p info +printf 'Head commit message: %s\n' "$message" | log -p info +printf 'Commit author: %s\n' "$author" | log -p info + +if [[ "$action" != "completed" ]] || \ + [[ "$conclusion" != "success" ]] || \ + [[ "$branch" != "$MAIN_BRANCH" ]]; then exit 0; fi +log -p notice <<<"Proceeding with continuous delivery!" + +function download_artifacts { + # $1: URL + # $2: directory to download artifacts to + pushd "$2" &>/dev/null + artifacts_payload=$(curl --no-progress-meter -u "$GITHUB_API_USER:$GITHUB_API_TOKEN" "$1" 2> >(log -p debug)) + artifacts_amount=$(jq -r '.total_count' <<<"$artifacts_payload") + + for i in $(seq 1 "$artifacts_amount"); do + printf 'Downloading artifact %s/%s...\n' "$i" "$artifacts_amount" | log -p info + name=$(jq -r ".artifacts[$((i - 1))].name" <<<"$artifacts_payload") + url=$(jq -r ".artifacts[$((i - 1))].archive_download_url" <<<"$artifacts_payload") + printf 'Artifact name: "%s" (downloading from %s)\n' "$name" "$url" | log -p info + + tmpfile=$(mktemp) + printf 'Downloading ZIP to %s\n' "$tmpfile" | log -p debug + curl --no-progress-meter -L -u "$GITHUB_API_USER:$GITHUB_API_TOKEN" --output "$tmpfile" "$url" 2> >(log -p debug) + + mkdir "$name" + printf 'Unzipping into %s...\n' "$2/$name" | log -p debug + unzip "$tmpfile" -d "$2/$name" | log -p debug + rm "$tmpfile" + done + popd &>/dev/null +} + +artifacts_dir=$(mktemp -d) +printf 'Downloading artifacts to %s...\n' "$artifacts_dir" | log -p info +download_artifacts "$artifacts" "$artifacts_dir" + +printf 'Running CD script!\n' | log -p notice +$CD_SCRIPT "$artifacts_dir" "$branch" "$commit" 2>&1 | log -t "CD script" -p info + +printf 'Deleting artifacts directory...\n' | log -p info +rm -r "$artifacts_dir" + diff --git a/resources/dumb-cd-webhooks/socat-httpie-success.jpg b/resources/dumb-cd-webhooks/socat-httpie-success.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1cac4a9c237762a9a642965daaa1dac9edadc189 GIT binary patch literal 82663 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ɏ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%0AJdYasAZUWc^&}iYyJyz=$4k0nRoqm% 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 literal 0 HcmV?d00001