diff --git a/Dockerfile b/Dockerfile index 960d2ff..a9b77e5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,8 +12,9 @@ COPY kube/ kube/ COPY checks checks/ # Build +ARG version RUN GOFLAGS="-mod=vendor" CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on \ - go build -a -o clusterlint main.go + go build -ldflags="-X main.Version=$version" -a -o clusterlint main.go # Use distroless as minimal base image to package the clusterlint binary # Refer to https://github.com/GoogleContainerTools/distroless for more details diff --git a/Makefile b/Makefile index 31db041..f055386 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ TAG ?= dev # Build the docker image docker-build: - docker build . -t ${IMG}:${TAG} + docker build . -t ${IMG}:${TAG} --build-arg version=${TAG} # Push the docker image docker-push: @@ -12,12 +12,12 @@ docker-push: # Build all binaries and sha sums for release build-binaries: - GOOS=linux GOARCH=amd64 go build -mod=vendor -o clusterlint ./cmd/clusterlint; tar -czvf clusterlint-${TAG}-linux-amd64.tar.gz ./clusterlint - GOOS=linux GOARCH=386 go build -mod=vendor -o clusterlint ./cmd/clusterlint; tar -czvf clusterlint-${TAG}-linux-386.tar.gz ./clusterlint - GOOS=darwin GOARCH=amd64 go build -mod=vendor -o clusterlint ./cmd/clusterlint; tar -czvf clusterlint-${TAG}-darwin-amd64.tar.gz ./clusterlint - GOOS=darwin GOARCH=arm64 go build -mod=vendor -o clusterlint ./cmd/clusterlint; tar -czvf clusterlint-${TAG}-darwin-arm64.tar.gz ./clusterlint - GOOS=windows GOARCH=amd64 go build -mod=vendor -o clusterlint.exe ./cmd/clusterlint; tar -czvf clusterlint-${TAG}-windows-amd64.tar.gz ./clusterlint - GOOS=windows GOARCH=386 go build -mod=vendor -o clusterlint.exe ./cmd/clusterlint; tar -czvf clusterlint-${TAG}-windows-386.tar.gz ./clusterlint + GOOS=linux GOARCH=amd64 go build -mod=vendor -ldflags="-X main.Version=${TAG}" -o clusterlint ./cmd/clusterlint; tar -czvf clusterlint-${TAG}-linux-amd64.tar.gz ./clusterlint + GOOS=linux GOARCH=386 go build -mod=vendor -ldflags="-X main.Version=${TAG}" -o clusterlint ./cmd/clusterlint; tar -czvf clusterlint-${TAG}-linux-386.tar.gz ./clusterlint + GOOS=darwin GOARCH=amd64 go build -mod=vendor -ldflags="-X main.Version=${TAG}" -o clusterlint ./cmd/clusterlint; tar -czvf clusterlint-${TAG}-darwin-amd64.tar.gz ./clusterlint + GOOS=darwin GOARCH=arm64 go build -mod=vendor -ldflags="-X main.Version=${TAG}" -o clusterlint ./cmd/clusterlint; tar -czvf clusterlint-${TAG}-darwin-arm64.tar.gz ./clusterlint + GOOS=windows GOARCH=amd64 go build -mod=vendor -ldflags="-X main.Version=${TAG}" -o clusterlint.exe ./cmd/clusterlint; tar -czvf clusterlint-${TAG}-windows-amd64.tar.gz ./clusterlint + GOOS=windows GOARCH=386 go build -mod=vendor -ldflags="-X main.Version=${TAG}" -o clusterlint.exe ./cmd/clusterlint; tar -czvf clusterlint-${TAG}-windows-386.tar.gz ./clusterlint sha256sum clusterlint-${TAG}-linux-amd64.tar.gz >> clusterlint-${TAG}-checksums.sha256 sha256sum clusterlint-${TAG}-linux-386.tar.gz >> clusterlint-${TAG}-checksums.sha256 sha256sum clusterlint-${TAG}-darwin-amd64.tar.gz >> clusterlint-${TAG}-checksums.sha256 diff --git a/cmd/clusterlint/main.go b/cmd/clusterlint/main.go index 504ba0d..f1a1036 100644 --- a/cmd/clusterlint/main.go +++ b/cmd/clusterlint/main.go @@ -36,10 +36,13 @@ import ( const delimiter = ":" +var Version string + func main() { app := cli.NewApp() app.Name = "clusterlint" app.Usage = "Linter for k8s objects from a live cluster" + app.Version = Version app.Flags = []cli.Flag{ cli.StringFlag{ Name: "kubeconfig",