validate and update vendor target
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>master
							parent
							
								
									27b5563245
								
							
						
					
					
						commit
						ffa3019c1f
					
				|  | @ -0,0 +1,29 @@ | ||||||
|  | name: validate | ||||||
|  | 
 | ||||||
|  | on: | ||||||
|  |   push: | ||||||
|  |     branches: | ||||||
|  |       - 'main' | ||||||
|  |       - 'release/*' | ||||||
|  |     tags: | ||||||
|  |       - 'v*' | ||||||
|  |   pull_request: | ||||||
|  |     branches: | ||||||
|  |       - '*' | ||||||
|  | 
 | ||||||
|  | jobs: | ||||||
|  |   validate: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     strategy: | ||||||
|  |       fail-fast: false | ||||||
|  |       matrix: | ||||||
|  |         target: | ||||||
|  |           - validate-vendor | ||||||
|  |     steps: | ||||||
|  |       - | ||||||
|  |         name: Checkout | ||||||
|  |         uses: actions/checkout@v2 | ||||||
|  |       - | ||||||
|  |         name: Run | ||||||
|  |         run: | | ||||||
|  |           make ${{ matrix.target }} | ||||||
							
								
								
									
										12
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										12
									
								
								Makefile
								
								
								
								
							|  | @ -38,7 +38,7 @@ BINARIES=$(addprefix bin/,$(COMMANDS)) | ||||||
| TESTFLAGS ?= -v $(TESTFLAGS_RACE) | TESTFLAGS ?= -v $(TESTFLAGS_RACE) | ||||||
| TESTFLAGS_PARALLEL ?= 8 | TESTFLAGS_PARALLEL ?= 8 | ||||||
| 
 | 
 | ||||||
| .PHONY: all build binaries check clean test test-race test-full integration coverage | .PHONY: all build binaries check clean test test-race test-full integration coverage validate-vendor vendor | ||||||
| .DEFAULT: all | .DEFAULT: all | ||||||
| 
 | 
 | ||||||
| all: binaries | all: binaries | ||||||
|  | @ -100,3 +100,13 @@ build: | ||||||
| clean: ## clean up binaries
 | clean: ## clean up binaries
 | ||||||
| 	@echo "$(WHALE) $@" | 	@echo "$(WHALE) $@" | ||||||
| 	@rm -f $(BINARIES) | 	@rm -f $(BINARIES) | ||||||
|  | 
 | ||||||
|  | validate-vendor: ## validate vendor
 | ||||||
|  | 	docker buildx bake validate-vendor | ||||||
|  | 
 | ||||||
|  | vendor: ## update vendor
 | ||||||
|  | 	$(eval $@_TMP_OUT := $(shell mktemp -d -t buildx-output.XXXXXXXXXX)) | ||||||
|  | 	docker buildx bake --set "*.output=$($@_TMP_OUT)" update-vendor | ||||||
|  | 	rm -rf ./vendor | ||||||
|  | 	cp -R "$($@_TMP_OUT)"/out/* . | ||||||
|  | 	rm -rf $($@_TMP_OUT)/* | ||||||
|  |  | ||||||
|  | @ -19,6 +19,22 @@ target "docker-metadata-action" { | ||||||
|   tags = ["registry:local"] |   tags = ["registry:local"] | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | group "validate" { | ||||||
|  |   targets = ["validate-vendor"] | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | target "validate-vendor" { | ||||||
|  |   dockerfile = "./dockerfiles/vendor.Dockerfile" | ||||||
|  |   target = "validate" | ||||||
|  |   output = ["type=cacheonly"] | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | target "update-vendor" { | ||||||
|  |   dockerfile = "./dockerfiles/vendor.Dockerfile" | ||||||
|  |   target = "update" | ||||||
|  |   output = ["."] | ||||||
|  | } | ||||||
|  | 
 | ||||||
| target "binary" { | target "binary" { | ||||||
|   inherits = ["_common"] |   inherits = ["_common"] | ||||||
|   target = "binary" |   target = "binary" | ||||||
|  |  | ||||||
|  | @ -0,0 +1,37 @@ | ||||||
|  | # syntax=docker/dockerfile:1 | ||||||
|  | 
 | ||||||
|  | ARG GO_VERSION=1.17 | ||||||
|  | 
 | ||||||
|  | FROM golang:${GO_VERSION}-alpine AS base | ||||||
|  | RUN apk add --no-cache git rsync | ||||||
|  | WORKDIR /src | ||||||
|  | 
 | ||||||
|  | FROM base AS vendored | ||||||
|  | RUN --mount=target=/context \ | ||||||
|  |   --mount=target=.,type=tmpfs  \ | ||||||
|  |   --mount=target=/go/pkg/mod,type=cache <<EOT | ||||||
|  | set -e | ||||||
|  | rsync -a /context/. . | ||||||
|  | go mod tidy | ||||||
|  | go mod vendor | ||||||
|  | mkdir /out | ||||||
|  | cp -r go.mod go.sum vendor /out | ||||||
|  | EOT | ||||||
|  | 
 | ||||||
|  | FROM scratch AS update | ||||||
|  | COPY --from=vendored /out /out | ||||||
|  | 
 | ||||||
|  | FROM vendored AS validate | ||||||
|  | RUN --mount=target=/context \ | ||||||
|  |   --mount=target=.,type=tmpfs <<EOT | ||||||
|  | set -e | ||||||
|  | rsync -a /context/. . | ||||||
|  | git add -A | ||||||
|  | rm -rf vendor | ||||||
|  | cp -rf /out/* . | ||||||
|  | if [ -n "$(git status --porcelain -- go.mod go.sum vendor)" ]; then | ||||||
|  |   echo >&2 'ERROR: Vendor result differs. Please vendor your package with "make vendor"' | ||||||
|  |   git status --porcelain -- go.mod go.sum vendor | ||||||
|  |   exit 1 | ||||||
|  | fi | ||||||
|  | EOT | ||||||
		Loading…
	
		Reference in New Issue