diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 000000000..14b064846
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,89 @@
+FROM ubuntu:latest as git-compiler
+# Optional curl options like --insecure in case you're behind a corporate proxy.
+ARG CURL_OPTIONS=''
+# no interactions with apt possible
+ENV DEBIAN_FRONTEND=noninteractive
+# update apt
+RUN apt-get update -qq -y;
+# Install stuff for git itself
+RUN apt-get install -qq -y --no-install-recommends \
+    zlib1g \
+    libcurl4 \
+    perl \
+    libpcre3 \
+    libexpat1 \
+    liberror-perl \
+    libc6;
+# Install meta-things for building on the end-user's machine
+RUN apt-get install -qq -y --no-install-recommends \
+    build-essential \
+    autoconf \
+    dh-autoreconf \
+    # @see https://help.ubuntu.com/community/CheckInstall
+    checkinstall \
+    curl \
+    # @see https://stedolan.github.io/jq/tutorial/
+    jq;
+# Install dev stuff for git
+RUN apt-get install -qq -y --no-install-recommends \
+    libcurl4-openssl-dev \
+    tcl-dev \
+    gettext \
+    asciidoc \
+    libexpat1-dev \
+    libz-dev \
+    libssl-dev;
+# prepare source dir
+RUN mkdir -p /root/src;
+WORKDIR /root/src
+# download & extract source tar
+RUN curl ${CURL_OPTIONS} \
+        --location \
+        --fail \
+        # assuming the top-most tag is the most recent version
+        $(curl ${CURL_OPTIONS} --silent --fail 'https://api.github.com/repos/git/git/tags' | jq '.[0].tarball_url' | tr -d '"') \
+    | tar xz --strip 1;
+# configure & compile git with OpenSSL
+RUN make configure; \
+    ./configure --prefix=/usr --with-openssl; \
+    make;
+# create debian package
+RUN checkinstall \
+    --default \
+    --type=debian \
+    --pkgname=git-openssl \
+    --pkgversion=$(./git --version | cut -d " " -f 3) \
+    --pkgarch=$(dpkg --print-architecture) \
+    --conflicts=git \
+    --requires="libcurl4,zlib1g \(\>= 1:1.2.0\),perl,libpcre3,libexpat1 \(\>= 2.0.1\),liberror-perl,libc6" \
+    --recommends="less,patch,ssh-client,ca-certificates" \
+    make install;
+# move created .deb file to a more scriptable filename
+RUN cp -v ./git-openssl_$(./git --version | cut -d " " -f 3)-1_$(dpkg --print-architecture).deb /root/git-openssl.deb;
+
+# install package on plain ubuntu
+FROM ubuntu:latest
+# copy package from temporary image
+COPY --from=git-compiler \
+    /root/git-openssl.deb \
+    /root/git-openssl.deb
+# install package dependencies
+RUN set -xe; \
+    apt-get update -qq -y; \
+    apt-get install -qq -y --no-install-recommends \
+        libcurl4 \
+        perl \
+        libexpat1 \
+        liberror-perl \
+        ca-certificates \
+        less \
+        patch \
+        ssh-client; \
+    apt-get clean; \
+    # install package
+    dpkg -i /root/git-openssl.deb; \
+    # create git config files
+    touch /root/.gitconfig /root/.git-credentials /etc/skel/.gitconfig /etc/skel/.git-credentials; \
+    # create 10 user- and group-IDs in case this image is run without privileges
+    bash -c 'for i in {1000..1010}; do groupadd -g ${i} -o "group${i}"; useradd -m -u ${i} -g ${i} -s /usr/bin/bash "user${i}"; done'
+ENTRYPOINT [ "git" ]
diff --git a/build-release-image.sh b/build-release-image.sh
new file mode 100755
index 000000000..2ce221992
--- /dev/null
+++ b/build-release-image.sh
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+set -e
+
+repository='paulnelsonbaker'
+name='git-static-binary'
+test_clone_url="https://github.com/paul-nelson-baker/git-openssl-shellscript.git"
+
+set -x
+docker build . -t "${name}:latest"
+
+clone_directory="${HOME}/$(basename $(mktemp -d 2>/dev/null || mktemp -d -t 'mytmpdir'))"
+mkdir -p "${clone_directory}"
+docker run -v "${clone_directory}:/clone" -w '/clone' "${name}:latest" clone "${test_clone_url}"
+
+git_version=$(docker run "${name}:latest" --version | awk '{ print $3 }')
+docker tag "${name}:latest" "${repository}/${name}:${git_version}"
+docker push "${repository}/${name}:${git_version}"
+
+# Notes, still can't get curl to statically compile into git....
+# Might need something like this? https://scripter.co/nim-deploying-static-binaries/
\ No newline at end of file
diff --git a/git-compiler-helper/go.mod b/git-compiler-helper/go.mod
new file mode 100644
index 000000000..33e2585aa
--- /dev/null
+++ b/git-compiler-helper/go.mod
@@ -0,0 +1,21 @@
+module git-compiler-helper
+
+go 1.13
+
+require (
+	github.com/PuerkitoBio/goquery v1.5.0 // indirect
+	github.com/andybalholm/cascadia v1.1.0 // indirect
+	github.com/antchfx/htmlquery v1.2.0 // indirect
+	github.com/antchfx/xmlquery v1.2.1 // indirect
+	github.com/antchfx/xpath v1.1.2 // indirect
+	github.com/gobwas/glob v0.2.3 // indirect
+	github.com/gocolly/colly v1.2.0
+	github.com/golang/groupcache v0.0.0-20191027212112-611e8accdfc9 // indirect
+	github.com/golang/protobuf v1.3.2 // indirect
+	github.com/jawher/mow.cli v1.1.0 // indirect
+	github.com/kennygrant/sanitize v1.2.4 // indirect
+	github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca // indirect
+	github.com/temoto/robotstxt v1.1.1 // indirect
+	golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933 // indirect
+	google.golang.org/appengine v1.6.5 // indirect
+)
diff --git a/git-compiler-helper/go.sum b/git-compiler-helper/go.sum
new file mode 100644
index 000000000..c262edf26
--- /dev/null
+++ b/git-compiler-helper/go.sum
@@ -0,0 +1,49 @@
+github.com/PuerkitoBio/goquery v1.5.0 h1:uGvmFXOA73IKluu/F84Xd1tt/z07GYm8X49XKHP7EJk=
+github.com/PuerkitoBio/goquery v1.5.0/go.mod h1:qD2PgZ9lccMbQlc7eEOjaeRlFQON7xY8kdmcsrnKqMg=
+github.com/andybalholm/cascadia v1.0.0 h1:hOCXnnZ5A+3eVDX8pvgl4kofXv2ELss0bKcqRySc45o=
+github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
+github.com/andybalholm/cascadia v1.1.0 h1:BuuO6sSfQNFRu1LppgbD25Hr2vLYW25JvxHs5zzsLTo=
+github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
+github.com/antchfx/htmlquery v1.2.0 h1:oKShnsGlnOHX6t4uj5OHgLKkABcJoqnXpqnscoi9Lpw=
+github.com/antchfx/htmlquery v1.2.0/go.mod h1:MS9yksVSQXls00iXkiMqXr0J+umL/AmxXKuP28SUJM8=
+github.com/antchfx/xmlquery v1.2.1 h1:wE4xjHrqOScP440wdv23Xkg0Gr8JryW0ptqodPH+y2U=
+github.com/antchfx/xmlquery v1.2.1/go.mod h1:/+CnyD/DzHRnv2eRxrVbieRU/FIF6N0C+7oTtyUtCKk=
+github.com/antchfx/xpath v1.1.2 h1:YziPrtM0gEJBnhdUGxYcIVYXZ8FXbtbovxOi+UW/yWQ=
+github.com/antchfx/xpath v1.1.2/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
+github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
+github.com/gocolly/colly v1.2.0 h1:qRz9YAn8FIH0qzgNUw+HT9UN7wm1oF9OBAilwEWpyrI=
+github.com/gocolly/colly v1.2.0/go.mod h1:Hof5T3ZswNVsOHYmba1u03W65HDWgpV5HifSuueE0EA=
+github.com/golang/groupcache v0.0.0-20191027212112-611e8accdfc9 h1:uHTyIjqVhYRhLbJ8nIiOJHkEZZ+5YoOsAbD3sk82NiE=
+github.com/golang/groupcache v0.0.0-20191027212112-611e8accdfc9/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg=
+github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs=
+github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/jawher/mow.cli v1.1.0 h1:NdtHXRc0CwZQ507wMvQ/IS+Q3W3x2fycn973/b8Zuk8=
+github.com/jawher/mow.cli v1.1.0/go.mod h1:aNaQlc7ozF3vw6IJ2dHjp2ZFiA4ozMIYY6PyuRJwlUg=
+github.com/kennygrant/sanitize v1.2.4 h1:gN25/otpP5vAsO2djbMhF/LQX6R7+O1TB4yv8NzpJ3o=
+github.com/kennygrant/sanitize v1.2.4/go.mod h1:LGsjYYtgxbetdg5owWB2mpgUL6e2nfw2eObZ0u0qvak=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca h1:NugYot0LIVPxTvN8n+Kvkn6TrbMyxQiuvKdEwFdR9vI=
+github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca/go.mod h1:uugorj2VCxiV1x+LzaIdVa9b4S4qGAcH6cbhh4qVxOU=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/temoto/robotstxt v1.1.1 h1:Gh8RCs8ouX3hRSxxK7B1mO5RFByQ4CmJZDwgom++JaA=
+github.com/temoto/robotstxt v1.1.1/go.mod h1:+1AmkuG3IYkh1kv0d2qEB9Le88ehNO0zwOr3ujewlOo=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
+golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933 h1:e6HwijUxhDe+hPNjZQQn9bA5PW3vNmnN64U2ZW759Lk=
+golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+google.golang.org/appengine v1.6.5 h1:tycE03LOZYQNhDpS27tcQdAzLCVMaj7QT2SXxebnpCM=
+google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
diff --git a/git-compiler-helper/main.go b/git-compiler-helper/main.go
new file mode 100644
index 000000000..272a420e2
--- /dev/null
+++ b/git-compiler-helper/main.go
@@ -0,0 +1,37 @@
+package main
+
+import (
+	"fmt"
+	"log"
+	"os"
+	"sort"
+	"strings"
+
+	"github.com/gocolly/colly"
+)
+
+func main() {
+	c := colly.NewCollector()
+	var versions []string
+	c.OnHTML(`div.commit a.muted-link`, func(e *colly.HTMLElement) {
+		href := e.Attr("href")
+		debug("found href: %s", href)
+		if strings.HasSuffix(href, ".tar.gz") {
+			debug("saving: %s", href)
+			versions = append(versions, href)
+		}
+	})
+	c.Visit("https://github.com/git/git/tags")
+	sort.Strings(versions)
+	debug("sorted versions: %v", versions)
+	if len(versions) == 0 {
+		log.Fatalln("no versions were found when scraping github")
+	}
+	fmt.Printf("https://www.github.com%s", versions[len(versions)-1])
+}
+
+func debug(s string, args ...interface{}) {
+	if debug := os.Getenv("DEBUG"); debug != "" {
+		log.Printf(s, args...)
+	}
+}
