diff --git a/envoy/go/golang-builder/Dockerfile b/envoy/go/golang-builder/Dockerfile
new file mode 100644
index 0000000..1673daa
--- /dev/null
+++ b/envoy/go/golang-builder/Dockerfile
@@ -0,0 +1,43 @@
+FROM golang:latest
+MAINTAINER Alex Peters <info@alexanderpeters.de>
+
+RUN apt-get update && apt-get install -y apt-transport-https ca-certificates jq
+
+RUN echo "deb https://apt.dockerproject.org/repo debian-jessie main" > /etc/apt/sources.list.d/docker.list
+RUN apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
+
+RUN apt-get update && apt-cache policy docker-engine && apt-get install -y upx-ucl docker-engine && apt-get clean
+
+RUN go get github.com/pwaller/goupx \
+	&& go get golang.org/x/tools/cmd/cover \
+    && go get -u github.com/golang/lint/golint \
+    && go get github.com/kisielk/errcheck \
+    && go get github.com/cespare/prettybench \
+    && go get github.com/uber/go-torch
+
+# Install dependency management tools
+# gpm
+RUN wget https://raw.githubusercontent.com/pote/gpm/v1.3.2/bin/gpm -O /usr/local/bin/gpm && \
+  chmod +x /usr/local/bin/gpm
+
+# glide
+ENV glide_version=v0.12.3
+RUN mkdir -p bin ; \
+    curl -L  https://github.com/Masterminds/glide/releases/download/${glide_version}/glide-${glide_version}-linux-amd64.tar.gz | \
+    tar -xz -C bin ; \
+  	mv bin/linux-amd64/glide bin/glide; \
+    rm -rf bin/linux-amd64
+
+
+ARG GITHUB_TOKEN
+RUN echo "machine github.com login $GITHUB_TOKEN" >/root/.netrc
+
+COPY build_environment.sh /
+COPY build.sh /
+
+VOLUME /src
+WORKDIR /src
+
+ENV GORACE="halt_on_error=1"
+
+ENTRYPOINT ["/build.sh"]
diff --git a/envoy/go/golang-builder/LICENSE b/envoy/go/golang-builder/LICENSE
new file mode 100644
index 0000000..1e76aab
--- /dev/null
+++ b/envoy/go/golang-builder/LICENSE
@@ -0,0 +1,201 @@
+Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 2015 CenturyLink, optiopay
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/envoy/go/golang-builder/README.md b/envoy/go/golang-builder/README.md
new file mode 100644
index 0000000..5a2a784
--- /dev/null
+++ b/envoy/go/golang-builder/README.md
@@ -0,0 +1,88 @@
+# golang-builder
+
+This is a docker image to build Go projects and docker images. The container will run:
+* go vet
+* golint
+* errcheck
+* test with race detector
+* coverage reports
+* The binary
+* Docker image
+
+
+Reports are generated into the `buildreport/` directory.
+
+It is heavily inspired by:[CenturyLinkLabs golang-builder](https://github.com/CenturyLinkLabs/golang-builder).
+
+## Full qualified package
+To build the project with valid package references the Go builder needs to create the `GOPATH` with proper directories. Which directories
+these are is not in the Go source code. Options are:
+
+### Canonical Import Path
+Go allows you to define it via source code comment, for example:
+
+```
+package main // import "github.com/alpe/ci-example-project"
+```
+See [Canonical import paths](https://golang.org/doc/go1.4#canonicalimports)
+
+
+### Glide package
+The [glide](https://github.com/Masterminds/glide) dependency manager allows you to define the root package of your project in it's `glide.yaml` configuration file.
+```yaml
+package: github.com/alpe/ci-example
+import:
+...
+
+```
+### Godeps
+Same with [Godeps](https://github.com/tools/godep). You can define the full qualified package name in the `Godeps/Godeps.json` file:
+```json
+{
+    "ImportPath": "github.com/alpe/ci-example",
+    ...
+}
+```
+
+
+### Default path
+An alternative would be to provide a *default path* which works for all your projects. See the `build_environment.sh`.
+
+## Dependency management
+The `build_environment.sh` would be a good start to look how things are currently implemented. Currently supported are:
+
+* [gpm](https://github.com/pote/gpm) is used for dependency management. This doesn't give you reproducable builds and comes with
+other issues. Though a lot of our projects use it therefore I support it until all our projects are migrated.
+* Official Go vendoring
+* [godep](https://github.com/tools/godep) which does vendoring
+* [glide](https://github.com/Masterminds/glide)
+
+## Build local
+
+You'll need a [github token](https://github.com/settings/tokens) that you can pass to the container. It will be persisted in the `.netrc` for [gpm](https://github.com/pote/gpm) to access private github repositories.
+
+* Build new go-builder docker image
+~~~bash
+docker build --build-arg GITHUB_TOKEN=<your-token> -t go-builder .
+~~~
+
+* Run container to build binary and code metrics
+~~~bash
+docker run --rm \
+  -v $(pwd):/src \
+  go-builder
+~~~
+
+* Run container to build docker image, binary and code metrics
+~~~bash
+docker run --rm \
+  -v $(pwd):/src \
+  -v /var/run/docker.sock:/var/run/docker.sock \
+  go-builder mytag
+~~~
+
+
+### Other Resources
+* Dependency management tools https://github.com/golang/go/wiki/PackageManagementTools
+* More details how to build minimal docker images: https://labs.ctl.io/small-docker-images-for-go-apps/
+* goclean.sh: https://gist.github.com/hailiang/0f22736320abe6be71ce
diff --git a/envoy/go/golang-builder/build.sh b/envoy/go/golang-builder/build.sh
new file mode 100755
index 0000000..0137347
--- /dev/null
+++ b/envoy/go/golang-builder/build.sh
@@ -0,0 +1,90 @@
+#!/bin/bash -e
+
+source /build_environment.sh
+
+mkdir buildreport
+novendor_dirs=$(go list ./... | grep -v '/vendor/')
+
+echo "Using nonvendor dirs:"
+echo "$novendor_dirs"
+echo "--------------------------------------"
+
+echo "* Run tests with race detector"
+go test -race ${novendor_dirs}
+
+echo "--------------------------------------"
+echo "* Run vet + golint"
+for f in go_vet.txt golint.txt
+do
+    touch buildreport/${f}
+done
+
+for d in $novendor_dirs
+do
+    go vet ${d} 2>> buildreport/go_vet.txt || true
+    golint ${d} >> buildreport/golint.txt || true
+done
+
+echo "--------------------------------------"
+echo "* Run errcheck"
+errcheck ${novendor_dirs} > buildreport/errcheck.txt || true
+
+
+# Run test coverage on each subdirectories and merge the coverage profile.
+echo "--------------------------------------"
+echo "* Building coverage report"
+
+echo "mode: count" > buildreport/profile.cov
+coverDirs=$novendor_dirs
+for dir in $coverDirs
+do
+    path="$GOPATH/src/$dir"
+    if ls $path/*.go &> /dev/null; then
+        go test -covermode=count -coverprofile=$path/profile.tmp $dir
+        if [ -f $path/profile.tmp ]
+        then
+            cat $path/profile.tmp | tail -n +2 >> buildreport/profile.cov
+            rm $path/profile.tmp
+        fi
+    fi
+done
+
+go tool cover -html buildreport/profile.cov -o buildreport/cover.html
+
+echo "--------------------------------------"
+main_packages=$(go list ./... |grep -v vendor |grep cmd || true)
+main_packages+=( ${pkgName} )
+for pkg in ${main_packages[@]}
+do
+    # Grab the last segment from the package name
+    name=${pkg##*/}
+    echo "* Building Go binary: $pkg"
+
+    flags=(-a -installsuffix cgo)
+    ldflags=('-s -X main.version='$BUILD_VERSION)
+
+    # Compile statically linked version of package
+    # see https://golang.org/cmd/link/ for all ldflags
+    CGO_ENABLED=${CGO_ENABLED:-0} go build \
+        "${flags[@]}" \
+        -ldflags "${ldflags[@]}" \
+        -o "$goPath/src/$pkg/$name" \
+        "$pkg"
+
+    if [[ $COMPRESS_BINARY == "true" ]];
+    then
+      goupx $name
+    fi
+
+    if [ -e "/var/run/docker.sock" ] && [ -e "$goPath/src/$pkg/Dockerfile" ];
+    then
+
+        # Default TAG_NAME to package name if not set explicitly
+        tagName=${tagName:-"$name":latest}
+        echo "--------------------------------------"
+        echo "* Building Docker image: $tagName"
+
+        # Build the image from the Dockerfile in the package directory
+        docker build --pull -t $tagName .
+    fi
+done
\ No newline at end of file
diff --git a/envoy/go/golang-builder/build_environment.sh b/envoy/go/golang-builder/build_environment.sh
new file mode 100755
index 0000000..ec63c68
--- /dev/null
+++ b/envoy/go/golang-builder/build_environment.sh
@@ -0,0 +1,73 @@
+#!/bin/bash
+
+tagName=$1
+
+if ( find /src -maxdepth 0 -empty | read v );
+then
+  echo "Error: Must mount Go source code into /src directory"
+  exit 990
+fi
+
+# Grab Go package name
+pkgName="$(go list -e -f '{{.ImportComment}}' 2>/dev/null || true)"
+
+if [ -z "$pkgName" ];
+then
+    if [ -f "/src/glide.yaml" ]
+    then
+        pkgName="$(glide name)"
+    elif [ -f "/src/Godeps/Godeps.json" ]
+    then
+        pkgName="$(cat /src/Godeps/Godeps.json | jq --raw-output '.ImportPath')"
+    else
+        url=$(git config --get remote.origin.url)
+        if [[ "$url" == http* ]]
+        then
+            pkgName=$(echo ${url} | sed -E 's|https?://(.+)|\1|')
+        elif [[ "$url" == git@* ]]
+        then
+            pkgName=$(echo ${url} | sed -E 's|git@(.+):(.+).git|\1/\2|')
+        fi
+    fi
+fi
+
+if [ -z "$pkgName" ];
+then
+  echo "Error: Must add canonical import path to root package"
+  exit 992
+fi
+
+# Grab just first path listed in GOPATH
+goPath="${GOPATH%%:*}"
+
+# Construct Go package path
+pkgPath="$goPath/src/$pkgName"
+
+# Set-up src directory tree in GOPATH
+mkdir -p "$(dirname "$pkgPath")"
+
+# Link source dir into GOPATH
+ln -sf /src "$pkgPath"
+
+# change work dir to
+cd $pkgPath
+
+echo "--------------------------------------"
+echo "* Resolve dependencies"
+if [ -e "$pkgPath/vendor" ];
+then
+    echo "unsing vendor folder"
+elif [ -d "$pkgPath/Godeps" ];
+then
+   gpm install
+elif [ -d "$pkgPath/Godeps/_workspace" ];
+then
+  # Add local godeps dir to GOPATH
+  GOPATH=$pkgPath/Godeps/_workspace:$GOPATH
+elif [ -f "$pkgPath/glide.yaml" ];
+then
+    glide install
+else
+  # Get all package dependencies
+  go get -t -d -v ./...
+fi
