Re-committing the directory in hopes that it uploads correctly this
time.
Change-Id: I3bb05404a47c3ef13bfb564366a7c9691c1fb79f
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