diff --git a/Dockerfile b/Dockerfile index fcdb81bc5..96b38530d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,6 @@ # syntax = docker/dockerfile:experimental ARG GO_VERSION=1.14.3-alpine +ARG GOLANGCI_LINT_VERSION=1.27.0 FROM golang:${GO_VERSION} AS base ARG TARGET_OS=unknown @@ -32,14 +33,23 @@ ADD . ${PWD} FROM protos-base AS make-protos RUN make -f builder.Makefile protos +FROM golangci/golangci-lint:v${GOLANGCI_LINT_VERSION}-alpine AS lint-base + +FROM base AS lint +COPY --from=lint-base /usr/bin/golangci-lint /usr/bin/golangci-lint +ENV CGO_ENABLED=0 +RUN --mount=id=build,type=cache,target=/root/.cache/go-build \ + --mount=id=lint,type=cache,target=/root/.cache/golangci-lint \ + make -f builder.Makefile lint + FROM base AS make-cli -RUN --mount=type=cache,target=/root/.cache/go-build \ +RUN --mount=id=build,type=cache,target=/root/.cache/go-build \ GOOS=${TARGET_OS} \ GOARCH=${TARGET_ARCH} \ - make -f builder.Makefile cli + make -f builder.Makefile cli FROM base AS make-cross -RUN --mount=type=cache,target=/root/.cache/go-build \ +RUN --mount=id=build,type=cache,target=/root/.cache/go-build \ make -f builder.Makefile cross FROM scratch AS protos diff --git a/Makefile b/Makefile index b32125075..f2988dfdf 100644 --- a/Makefile +++ b/Makefile @@ -62,7 +62,8 @@ cache-clear: ## Clear the builder cache @docker builder prune --force --filter type=exec.cachemount --filter=unused-for=24h lint: ## run linter(s) - docker run --rm -t -v $(PWD):/app -w /app golangci/golangci-lint:v1.27-alpine golangci-lint run --timeout 10m0s ./... + @docker build . \ + --target lint classic-link: ## create docker-classic symlink if does not already exist ln -s /usr/local/bin/docker-classic /Applications/Docker.app/Contents/Resources/bin/docker @@ -73,4 +74,4 @@ help: ## Show help FORCE: -.PHONY: all protos cli e2e-local cross test cache-clear lint help classic-link +.PHONY: all protos cli e2e-local cross test cache-clear lint classic-link help