<pre style='margin:0'>
Clemens Lang (neverpanic) pushed a commit to branch master
in repository macports-infrastructure.

</pre>
<p><a href="https://github.com/macports/macports-infrastructure/commit/726d77b030e69d903d9311b724e5956310da6c46">https://github.com/macports/macports-infrastructure/commit/726d77b030e69d903d9311b724e5956310da6c46</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 726d77b  containers/paste: Add deployment script
</span>726d77b is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 726d77b030e69d903d9311b724e5956310da6c46
</span>Author: Clemens Lang <cal@macports.org>
AuthorDate: Thu Jun 11 22:43:47 2020 +0200

<span style='display:block; white-space:pre;color:#404040;'>    containers/paste: Add deployment script
</span>---
 containers/paste/deploy.sh | 65 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 65 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/containers/paste/deploy.sh b/containers/paste/deploy.sh
</span>new file mode 100755
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..761131a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/containers/paste/deploy.sh
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,65 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#!/usr/bin/env bash
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+##
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# This script downloads and builds a docker container from the Dockerfile in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# the current directory.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# 1. update the git repository this script resides in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# 2. rebuild the container if
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#   2.1 the Dockerfile or any of the files in its directory changed, or
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#   2.2 the container is older than a week, to update dependencies.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# 3. retag the container as paste:latest
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# 4. kill the current container, so that systemd will restart it
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set -euo pipefail
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# The number of old containers to keep for this Dockerfile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+KEEP_OLD_VERSIONS=5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+THISDIR=$(cd "$(dirname "$0")" && pwd)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+git -C "$THISDIR" fetch --quiet || true # Ignore network problems, assuming they are temporary
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+OLDREV=$(git -C "$THISDIR" log -1 --pretty=%H "$THISDIR")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+git -C "$THISDIR" reset --quiet --hard origin/master
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+NEWREV=$(git -C "$THISDIR" log -1 --pretty=%H "$THISDIR")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if [ "$OLDREV" != "$NEWREV" ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   # The container's folder changed. Since this potentially also affects this
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   # script, re-execute the script itself.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   printf "Revision changed from %s to %s, re-executing...\n" "$OLDREV" "$NEWREV"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   exec "$0" "$@"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cd "$THISDIR"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+CONTAINERNAME=$(basename "$(readlink -f .)")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TIMESTAMP=$(date +%G-%V)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Check whether the current container was already built for this version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+IMAGES=$(docker images --format "{{.ID}}" "$CONTAINERNAME:$NEWREV-$TIMESTAMP" | wc -l)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if [ "$IMAGES" -gt 0 ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   printf "Container %s is already the newest version. Nothing to do\n" "$CONTAINERNAME"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   exit 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+printf "Rebuilding container %s with tag %s\n" "$CONTAINERNAME" "$NEWREV-$TIMESTAMP"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+docker build --no-cache -t "$CONTAINERNAME:$NEWREV-$TIMESTAMP" .
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+printf "Rebuild successful, tagging as %s:latest\n" "$CONTAINERNAME"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+docker tag "$CONTAINERNAME:$NEWREV-$TIMESTAMP" "$CONTAINERNAME:latest"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Stop currently running container to force systemd to restart it
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+RUNNING_CONTAINER_ID=$(docker container inspect --format "{{.ID}}" "$CONTAINERNAME")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if [ -n "$RUNNING_CONTAINER_ID" ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   printf "Stopping running instance %s of container %s\n" "$RUNNING_CONTAINER_ID" "$CONTAINERNAME"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   docker stop "$RUNNING_CONTAINER_ID"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Cleanup old images
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+CLEANUP_IMAGES=$(docker images --format "{{.ID}}" --filter "before=$CONTAINERNAME:$NEWREV-$TIMESTAMP" | sed "1,${KEEP_OLD_VERSIONS}d" | tr '\n' ' ')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if [ -n "$CLEANUP_IMAGES" ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   docker rmi "$CLEANUP_IMAGES"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+printf "Updated %s to %s\n" "$CONTAINERNAME" "$NEWREV-$TIMESTAMP"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+exit 0
</span></pre><pre style='margin:0'>

</pre>