Initial commit.

Tools currently available are: go-junit-report, gocover-cobertura, golang, golang-ci-lint, hadolint, and protoc.
VERSION has been set to 1.0.0

Change-Id: Ib003e99ff36903da21db48e80153b1348e19d3c9
diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..f59ec20
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1 @@
+*
\ No newline at end of file
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..8db3e3f
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,126 @@
+# Copyright 2020-present Open Networking Foundation
+#
+# 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.
+
+# set default shell options
+SHELL = bash -e -o pipefail
+
+## Variables
+VERSION                   ?= $(shell cat ./VERSION)
+GO_JUNIT_REPORT_VERSION   ?= "0.9.1"
+GOCOVER_COBERTURA_VERSION ?= "v0.0.0-20180217150009-aaee18c8195c"
+GOLANG_VERSION            ?= "1.12.15"
+GOLANGCI_LINT_VERSION     ?= "1.17.0"
+HADOLINT_VERSION          ?= "1.17.4"
+PROTOC_VERSION            ?= "3.7.0"
+PROTOC_SHA256SUM          ?= "a1b8ed22d6dc53c5b8680a6f1760a305b33ef471bece482e92728f00ba2a2969"
+PROTOC_GEN_GO_VERSION     ?= "1.3.1"
+
+# Docker related
+DOCKER_LABEL_VCS_DIRTY     = false
+ifneq ($(shell git status --porcelain | wc -l | sed -e 's/ //g'),0)
+    DOCKER_LABEL_VCS_DIRTY = true
+    VERSION                = latest
+endif
+
+DOCKER_EXTRA_ARGS          ?=
+DOCKER_REGISTRY            ?= voltha
+DOCKER_REPOSITORY          ?= voltha-ci-tools
+IMAGENAME                  = ${DOCKER_REGISTRY}/${DOCKER_REPOSITORY}
+
+## Docker labels. Only set ref and commit date if committed
+DOCKER_LABEL_VCS_URL       ?= $(shell git remote get-url "$(shell git remote)" 2>/dev/null)
+DOCKER_LABEL_VCS_REF       = $(shell git rev-parse HEAD)
+DOCKER_LABEL_BUILD_DATE    ?= $(shell date -u "+%Y-%m-%dT%H:%M:%SZ")
+DOCKER_LABEL_COMMIT_DATE   = $(shell git show -s --format=%cd --date=iso-strict HEAD)
+
+DOCKER_BUILD_ARGS ?= \
+	${DOCKER_EXTRA_ARGS} \
+	--build-arg org_label_schema_version="${VERSION}" \
+	--build-arg org_label_schema_vcs_url="${DOCKER_LABEL_VCS_URL}" \
+	--build-arg org_label_schema_vcs_ref="${DOCKER_LABEL_VCS_REF}" \
+	--build-arg org_label_schema_build_date="${DOCKER_LABEL_BUILD_DATE}" \
+	--build-arg org_opencord_vcs_commit_date="${DOCKER_LABEL_COMMIT_DATE}" \
+	--build-arg org_opencord_vcs_dirty="${DOCKER_LABEL_VCS_DIRTY}"
+
+## runnable tool containers
+HADOLINT = docker run --rm --user $$(id -u):$$(id -g) -v $$PWD:/app ${IMAGENAME}:${VERSION}-hadolint hadolint
+
+lint: docker-lint
+
+docker-lint: hadolint
+	@echo "Linting Dockerfiles..."
+	@${HADOLINT} $(shell ls docker/*.Dockerfile)
+	@echo "Dockerfiles linted OK"
+
+
+build: docker-build
+
+docker-build: go-junit-report gocover-cobertura golang golangci-lint hadolint protoc
+
+go-junit-report:
+	docker build ${DOCKER_BUILD_ARGS} \
+	--build-arg GO_JUNIT_REPORT_VERSION=${GO_JUNIT_REPORT_VERSION} \
+	-t ${IMAGENAME}:${VERSION}-go-junit-report \
+	-t ${IMAGENAME}:latest-go-junit-report \
+	-f docker/go-junit-report.Dockerfile .
+
+gocover-cobertura:
+	docker build ${DOCKER_BUILD_ARGS} \
+	--build-arg GOCOVER_COBERTURA_VERSION=${GOCOVER_COBERTURA_VERSION} \
+	-t ${IMAGENAME}:${VERSION}-gocover-cobertura \
+	-t ${IMAGENAME}:latest-gocover-cobertura \
+	-f docker/gocover-cobertura.Dockerfile .
+
+golang:
+	docker build ${DOCKER_BUILD_ARGS} \
+	--build-arg GOLANG_VERSION=${GOLANG_VERSION} \
+	-t ${IMAGENAME}:${VERSION}-golang \
+	-t ${IMAGENAME}:latest-golang \
+	-f docker/golang.Dockerfile .
+
+golangci-lint:
+	docker build ${DOCKER_BUILD_ARGS} \
+	--build-arg GOLANGCI_LINT_VERSION=${GOLANGCI_LINT_VERSION} \
+	-t ${IMAGENAME}:${VERSION}-golangci-lint \
+	-t ${IMAGENAME}:latest-golangci-lint \
+	-f docker/golangci-lint.Dockerfile .
+
+hadolint:
+	docker build ${DOCKER_BUILD_ARGS} \
+    --build-arg HADOLINT_VERSION=${HADOLINT_VERSION} \
+    -t ${IMAGENAME}:${VERSION}-hadolint \
+    -t ${IMAGENAME}:latest-hadolint \
+    -f docker/hadolint.Dockerfile .
+
+protoc:
+	docker build ${DOCKER_BUILD_ARGS} \
+	--build-arg PROTOC_VERSION=${PROTOC_VERSION} \
+	--build-arg PROTOC_SHA256SUM=${PROTOC_SHA256SUM} \
+	--build-arg PROTOC_GEN_GO_VERSION=${PROTOC_GEN_GO_VERSION} \
+	-t ${IMAGENAME}:${VERSION}-protoc \
+	-t ${IMAGENAME}:latest-protoc \
+	-f docker/protoc.Dockerfile .
+
+docker-push:
+ifneq (false,$(DOCKER_LABEL_VCS_DIRTY))
+	@echo "Local repo is dirty.  Refusing to push."
+	@exit 1
+endif
+	docker push ${IMAGENAME}:${VERSION}-go-junit-report
+	docker push ${IMAGENAME}:${VERSION}-gocover-cobertura
+	docker push ${IMAGENAME}:${VERSION}-golang
+	docker push ${IMAGENAME}:${VERSION}-golangci-lint
+	docker push ${IMAGENAME}:${VERSION}-hadolint
+	docker push ${IMAGENAME}:${VERSION}-protoc
+
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..066ba7e
--- /dev/null
+++ b/README.md
@@ -0,0 +1,49 @@
+# Dockerized Tools for Voltha
+
+This repo contains Dockerfiles used to generate versioned tool containers.
+
+## Versioning
+
+Final docker images are tagged with the image version from the VERSION file.  This allows projects to specify a single "voltha toolchain version" and get all relevant tool versions.
+
+The VERSION file should be changed using these rules:
+
+* Bump Patch version if:
+  * Patch version of a tool has changed.
+  * This repo's supporting files have changed (Makefile, readme, etc.)  This rule assumes that the containers generated are backwards-compatible; if they are not, bump the major version instead.
+* Bump Minor version if:
+  * Minor version of a tool has changed.
+  * A new tool has been added.
+* Bump Major version if:
+  * Major version of a tool has changed.
+* Bump patch/minor/major version according to semver rules if a Dockerfile is changed.
+* Reset lesser versions if greater versions change.
+* Do not use -dev versions.
+
+## Tool Usage
+
+Only use containers tagged with `<VERSION>-tool`.<br/>
+Do NOT use containers tagged with `tool-<TOOL_VERSION>`.
+
+Some examples of how to use these containers:
+
+* golang -
+  `docker run --rm --user $(id -u):$(id -g) -v $PWD:/app -v gocache:/.cache -v gocache-${VOLTHA_TOOLS_VERSION}:/go/pkg voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-golang go <args>`
+* golangci-lint -
+  `docker run --rm --user $(id -u):$(id -g) -v $PWD:/app -v gocache:/.cache -v gocache-${VOLTHA_TOOLS_VERSION}:/go/pkg voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-golangci-lint golangci-lint <args>`
+* protoc -
+  `docker run --rm --user $(id -u):$(id -g) -v $PWD:/app voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-protoc protoc <args>`
+* hadolint -
+  `docker run --rm --user $(id -u):$(id -g) -v $PWD:/app voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-hadolint hadolint <args>`
+
+Details:
+
+* `--user` is specified so that generated files have sane ownership and permissions.
+* `-v` bind-mounts the local folder into the container.
+* `-v` is also used by golang containers to bind-mount volumes for caches.
+
+## Key Commands
+
+* `make build` to build containers
+* `make lint` to lint the Dockerfiles
+* `make docker-push` to push built containers to a registry
diff --git a/VERSION b/VERSION
new file mode 100644
index 0000000..afaf360
--- /dev/null
+++ b/VERSION
@@ -0,0 +1 @@
+1.0.0
\ No newline at end of file
diff --git a/docker/go-junit-report.Dockerfile b/docker/go-junit-report.Dockerfile
new file mode 100644
index 0000000..36ff473
--- /dev/null
+++ b/docker/go-junit-report.Dockerfile
@@ -0,0 +1,47 @@
+# Copyright 2020-present Open Networking Foundation
+#
+# 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.
+
+FROM golang:1.13.5-alpine as build
+
+RUN apk add --no-cache build-base=0.5-r1
+
+# download & compile this specific version of go-junit-report
+ARG GO_JUNIT_REPORT_VERSION
+RUN GO111MODULE=on CGO_ENABLED=0 go get -u -ldflags "-linkmode external -extldflags -static" github.com/jstemmer/go-junit-report@v$GO_JUNIT_REPORT_VERSION
+
+FROM busybox:1.31.1
+
+# copy go-junit-report
+COPY --from=build /go/bin/* /usr/local/bin/
+
+WORKDIR /app
+
+# Label image
+ARG org_label_schema_version=unknown
+ARG org_label_schema_vcs_url=unknown
+ARG org_label_schema_vcs_ref=unknown
+ARG org_label_schema_build_date=unknown
+ARG org_opencord_vcs_commit_date=unknown
+ARG org_opencord_vcs_dirty=unknown
+ARG GO_JUNIT_REPORT_VERSION=unknown
+
+LABEL org.label-schema.schema-version=1.0 \
+      org.label-schema.name=voltha-protoc \
+      org.label-schema.version=$org_label_schema_version \
+      org.label-schema.vcs-url=$org_label_schema_vcs_url \
+      org.label-schema.vcs-ref=$org_label_schema_vcs_ref \
+      org.label-schema.build-date=$org_label_schema_build_date \
+      org.opencord.vcs-commit-date=$org_opencord_vcs_commit_date \
+      org.opencord.vcs-dirty=$org_opencord_vcs_dirty \
+      org.opencord.go-junit-report-version=$GO_JUNIT_REPORT_VERSION
diff --git a/docker/gocover-cobertura.Dockerfile b/docker/gocover-cobertura.Dockerfile
new file mode 100644
index 0000000..74e4600
--- /dev/null
+++ b/docker/gocover-cobertura.Dockerfile
@@ -0,0 +1,47 @@
+# Copyright 2020-present Open Networking Foundation
+#
+# 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.
+
+FROM golang:1.13.5-alpine as build
+
+RUN apk add --no-cache build-base=0.5-r1
+
+# download & compile this specific version of gocover-cobertura
+ARG GOCOVER_COBERTURA_VERSION
+RUN GO111MODULE=on CGO_ENABLED=0 go get -u -ldflags "-linkmode external -extldflags -static" github.com/t-yuki/gocover-cobertura@$GOCOVER_COBERTURA_VERSION
+
+FROM busybox:1.31.1
+
+# copy gocover-cobertura
+COPY --from=build /go/bin/* /usr/local/bin/
+
+WORKDIR /app
+
+# Label image
+ARG org_label_schema_version=unknown
+ARG org_label_schema_vcs_url=unknown
+ARG org_label_schema_vcs_ref=unknown
+ARG org_label_schema_build_date=unknown
+ARG org_opencord_vcs_commit_date=unknown
+ARG org_opencord_vcs_dirty=unknown
+ARG GOCOVER_COBERTURA_VERSION=unknown
+
+LABEL org.label-schema.schema-version=1.0 \
+      org.label-schema.name=voltha-protoc \
+      org.label-schema.version=$org_label_schema_version \
+      org.label-schema.vcs-url=$org_label_schema_vcs_url \
+      org.label-schema.vcs-ref=$org_label_schema_vcs_ref \
+      org.label-schema.build-date=$org_label_schema_build_date \
+      org.opencord.vcs-commit-date=$org_opencord_vcs_commit_date \
+      org.opencord.vcs-dirty=$org_opencord_vcs_dirty \
+      org.opencord.gocover-cobertura-version=$GOCOVER_COBERTURA_VERSION
diff --git a/docker/golang.Dockerfile b/docker/golang.Dockerfile
new file mode 100644
index 0000000..e22bd8c
--- /dev/null
+++ b/docker/golang.Dockerfile
@@ -0,0 +1,42 @@
+# Copyright 2020-present Open Networking Foundation
+#
+# 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.
+
+ARG GOLANG_VERSION
+FROM golang:$GOLANG_VERSION-alpine
+
+RUN apk add --no-cache git=2.24.1-r0 && \
+    mkdir -m 777 /.cache /go/pkg
+
+ENV GO111MODULE=on CGO_ENABLED=0
+
+WORKDIR /app
+
+# Label image
+ARG org_label_schema_version=unknown
+ARG org_label_schema_vcs_url=unknown
+ARG org_label_schema_vcs_ref=unknown
+ARG org_label_schema_build_date=unknown
+ARG org_opencord_vcs_commit_date=unknown
+ARG org_opencord_vcs_dirty=unknown
+ARG GOLANG_VERSION=unknown
+
+LABEL org.label-schema.schema-version=1.0 \
+      org.label-schema.name=voltha-protoc \
+      org.label-schema.version=$org_label_schema_version \
+      org.label-schema.vcs-url=$org_label_schema_vcs_url \
+      org.label-schema.vcs-ref=$org_label_schema_vcs_ref \
+      org.label-schema.build-date=$org_label_schema_build_date \
+      org.opencord.vcs-commit-date=$org_opencord_vcs_commit_date \
+      org.opencord.vcs-dirty=$org_opencord_vcs_dirty \
+      org.opencord.golang-version=$GOLANG_VERSION
\ No newline at end of file
diff --git a/docker/golangci-lint.Dockerfile b/docker/golangci-lint.Dockerfile
new file mode 100644
index 0000000..c494331
--- /dev/null
+++ b/docker/golangci-lint.Dockerfile
@@ -0,0 +1,40 @@
+# Copyright 2020-present Open Networking Foundation
+#
+# 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.
+
+ARG GOLANGCI_LINT_VERSION
+FROM golangci/golangci-lint:v$GOLANGCI_LINT_VERSION
+
+RUN mkdir -m 777 /.cache /go/pkg
+
+WORKDIR /app
+
+# Label image
+ARG org_label_schema_version=unknown
+ARG org_label_schema_vcs_url=unknown
+ARG org_label_schema_vcs_ref=unknown
+ARG org_label_schema_build_date=unknown
+ARG org_opencord_vcs_commit_date=unknown
+ARG org_opencord_vcs_dirty=unknown
+ARG GOLANGCI_LINT_VERSION=unknown
+
+LABEL org.label-schema.schema-version=1.0 \
+      org.label-schema.name=voltha-golangci-lint \
+      org.label-schema.version=$org_label_schema_version \
+      org.label-schema.vcs-url=$org_label_schema_vcs_url \
+      org.label-schema.vcs-ref=$org_label_schema_vcs_ref \
+      org.label-schema.build-date=$org_label_schema_build_date \
+      org.opencord.vcs-commit-date=$org_opencord_vcs_commit_date \
+      org.opencord.vcs-dirty=$org_opencord_vcs_dirty \
+      org.opencord.golangci-lint-version=$GOLANGCI_LINT_VERSION
+
diff --git a/docker/hadolint.Dockerfile b/docker/hadolint.Dockerfile
new file mode 100644
index 0000000..dec9bcd
--- /dev/null
+++ b/docker/hadolint.Dockerfile
@@ -0,0 +1,38 @@
+# Copyright 2020-present Open Networking Foundation
+#
+# 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.
+
+ARG HADOLINT_VERSION
+FROM hadolint/hadolint:v$HADOLINT_VERSION
+
+WORKDIR /app
+
+# Label image
+ARG org_label_schema_version=unknown
+ARG org_label_schema_vcs_url=unknown
+ARG org_label_schema_vcs_ref=unknown
+ARG org_label_schema_build_date=unknown
+ARG org_opencord_vcs_commit_date=unknown
+ARG org_opencord_vcs_dirty=unknown
+ARG HADOLINT_VERSION=unknown
+
+LABEL org.label-schema.schema-version=1.0 \
+      org.label-schema.name=voltha-golangci-lint \
+      org.label-schema.version=$org_label_schema_version \
+      org.label-schema.vcs-url=$org_label_schema_vcs_url \
+      org.label-schema.vcs-ref=$org_label_schema_vcs_ref \
+      org.label-schema.build-date=$org_label_schema_build_date \
+      org.opencord.vcs-commit-date=$org_opencord_vcs_commit_date \
+      org.opencord.vcs-dirty=$org_opencord_vcs_dirty \
+      org.opencord.hadolint-version=$HADOLINT_VERSION
+
diff --git a/docker/protoc.Dockerfile b/docker/protoc.Dockerfile
new file mode 100644
index 0000000..64fad1e
--- /dev/null
+++ b/docker/protoc.Dockerfile
@@ -0,0 +1,70 @@
+# Copyright 2020-present Open Networking Foundation
+#
+# 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.
+
+FROM golang:1.13.5-alpine as build
+
+ARG PROTOC_VERSION
+ARG PROTOC_GEN_GO_VERSION
+ARG PROTOC_SHA256SUM
+
+RUN apk add --no-cache libatomic=9.2.0-r3 musl=1.1.24-r0
+
+# download & compile this specific version of protoc-gen-go
+RUN GO111MODULE=on go get -u github.com/golang/protobuf/protoc-gen-go@v$PROTOC_GEN_GO_VERSION
+
+RUN mkdir -p /tmp/protoc3 && \
+    wget -O /tmp/protoc-${PROTOC_VERSION}-linux-x86_64.zip https://github.com/google/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-x86_64.zip && \
+    [ "$(sha256sum /tmp/protoc-${PROTOC_VERSION}-linux-x86_64.zip)" = "${PROTOC_SHA256SUM}  /tmp/protoc-${PROTOC_VERSION}-linux-x86_64.zip" ] && \
+    unzip /tmp/protoc-${PROTOC_VERSION}-linux-x86_64.zip -d /tmp/protoc3
+
+
+FROM busybox:1.31.1-glibc
+
+# dynamic libs for protoc
+COPY --from=build /usr/lib/libatomic.so.1 /usr/lib/
+COPY --from=build /lib/libc.musl-x86_64.so.1 /usr/lib/
+ENV LD_LIBRARY_PATH=/usr/lib
+
+# protoc & well-known-type definitions
+COPY --from=build /tmp/protoc3/bin/* /usr/local/bin/
+COPY --from=build /tmp/protoc3/include/ /usr/local/include/
+# fix permissions so non-root can use
+RUN chmod -R a+rx /usr/local/bin/protoc && \
+    chmod -R a+rX /usr/local/include/
+
+# copy protoc-gen-go
+COPY --from=build /go/bin/* /usr/local/bin/
+
+WORKDIR /app
+
+# Label image
+ARG org_label_schema_version=unknown
+ARG org_label_schema_vcs_url=unknown
+ARG org_label_schema_vcs_ref=unknown
+ARG org_label_schema_build_date=unknown
+ARG org_opencord_vcs_commit_date=unknown
+ARG org_opencord_vcs_dirty=unknown
+ARG PROTOC_VERSION=unknown
+ARG PROTOC_GEN_GO_VERSION=unknown
+
+LABEL org.label-schema.schema-version=1.0 \
+      org.label-schema.name=voltha-protoc \
+      org.label-schema.version=$org_label_schema_version \
+      org.label-schema.vcs-url=$org_label_schema_vcs_url \
+      org.label-schema.vcs-ref=$org_label_schema_vcs_ref \
+      org.label-schema.build-date=$org_label_schema_build_date \
+      org.opencord.vcs-commit-date=$org_opencord_vcs_commit_date \
+      org.opencord.vcs-dirty=$org_opencord_vcs_dirty \
+      org.opencord.protoc-version=$PROTOC_VERSION \
+      org.opencord.protoc-gen-go-version=$PROTOC_GEN_GO_VERSION