diff --git a/Makefile b/Makefile index 19c1bf0c4..d30459a2d 100644 --- a/Makefile +++ b/Makefile @@ -38,7 +38,7 @@ BINARIES=$(addprefix bin/,$(COMMANDS)) TESTFLAGS ?= -v $(TESTFLAGS_RACE) TESTFLAGS_PARALLEL ?= 8 -.PHONY: all build binaries check clean test test-race test-full integration coverage validate-vendor vendor +.PHONY: all build binaries check clean test test-race test-full integration coverage validate-vendor vendor mod-outdated .DEFAULT: all all: binaries @@ -110,3 +110,6 @@ vendor: ## update vendor rm -rf ./vendor cp -R "$($@_TMP_OUT)"/out/* . rm -rf $($@_TMP_OUT)/* + +mod-outdated: ## check outdated dependencies + docker buildx bake mod-outdated diff --git a/docker-bake.hcl b/docker-bake.hcl index 476a3124e..fb80a424d 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -35,6 +35,17 @@ target "update-vendor" { output = ["."] } +target "mod-outdated" { + dockerfile = "./dockerfiles/vendor.Dockerfile" + target = "outdated" + args = { + // used to invalidate cache for outdated run stage + // can be dropped when https://github.com/moby/buildkit/issues/1213 fixed + _RANDOM = uuidv4() + } + output = ["type=cacheonly"] +} + target "binary" { inherits = ["_common"] target = "binary" diff --git a/dockerfiles/vendor.Dockerfile b/dockerfiles/vendor.Dockerfile index 55006773e..9bd439861 100644 --- a/dockerfiles/vendor.Dockerfile +++ b/dockerfiles/vendor.Dockerfile @@ -1,6 +1,7 @@ # syntax=docker/dockerfile:1 ARG GO_VERSION=1.17 +ARG MODOUTDATED_VERSION=v0.8.0 FROM golang:${GO_VERSION}-alpine AS base RUN apk add --no-cache git rsync @@ -35,3 +36,11 @@ if [ -n "$(git status --porcelain -- go.mod go.sum vendor)" ]; then exit 1 fi EOT + +FROM psampaz/go-mod-outdated:${MODOUTDATED_VERSION} AS go-mod-outdated +FROM base AS outdated +ARG _RANDOM +RUN --mount=target=.,ro \ + --mount=target=/go/pkg/mod,type=cache \ + --mount=from=go-mod-outdated,source=/home/go-mod-outdated,target=/usr/bin/go-mod-outdated \ + go list -mod=readonly -u -m -json all | go-mod-outdated -update -direct