Merge pull request #19 from pohly/go-mod-vendor
build.make: allow repos to use 'go mod' for vendoring
This commit is contained in:
		
						commit
						03999882f6
					
				
							
								
								
									
										33
									
								
								build.make
								
								
								
								
							
							
						
						
									
										33
									
								
								build.make
								
								
								
								
							|  | @ -118,14 +118,39 @@ test-fmt: | ||||||
| 	fi | 	fi | ||||||
| 
 | 
 | ||||||
| # This test only runs when dep >= 0.5 is installed, which is the case for the CI setup. | # This test only runs when dep >= 0.5 is installed, which is the case for the CI setup. | ||||||
|  | # When using 'go mod', we allow the test to be skipped in the Prow CI under some special | ||||||
|  | # circumstances, because it depends on accessing all remote repos and thus | ||||||
|  | # running it all the time would defeat the purpose of vendoring: | ||||||
|  | # - not handling a PR or | ||||||
|  | # - the fabricated merge commit leaves go.mod, go.sum and vendor dir unchanged | ||||||
|  | # - release-tools also didn't change (changing rules or Go version might lead to | ||||||
|  | #   a different result and thus must be tested) | ||||||
| .PHONY: test-vendor | .PHONY: test-vendor | ||||||
| test: test-vendor | test: test-vendor | ||||||
| test-vendor: | test-vendor: | ||||||
| 	@ echo; echo "### $@:" | 	@ echo; echo "### $@:" | ||||||
| 	@ case "$$(dep version 2>/dev/null | grep 'version *:')" in \ | 	@ if [ -f Gopkg.toml ]; then \ | ||||||
| 		*v0.[56789]*) dep check && echo "vendor up-to-date" || false;; \ | 		echo "Repo uses 'dep' for vendoring."; \ | ||||||
| 		*) echo "skipping check, dep >= 0.5 required";; \ | 		case "$$(dep version 2>/dev/null | grep 'version *:')" in \ | ||||||
| 	esac | 			*v0.[56789]*) dep check && echo "vendor up-to-date" || false;; \ | ||||||
|  | 			*) echo "skipping check, dep >= 0.5 required";; \ | ||||||
|  | 		esac; \ | ||||||
|  | 	  else \ | ||||||
|  | 		echo "Repo uses 'go mod' for vendoring."; \ | ||||||
|  | 		if [ "$${JOB_NAME}" ] && \ | ||||||
|  |                    ( [ "$${JOB_TYPE}" != "presubmit" ] || \ | ||||||
|  |                      [ $$(git diff "${PULL_BASE_SHA}..HEAD" -- go.mod go.sum vendor release-tools | wc -l) -eq 0 ] ); then \ | ||||||
|  | 			echo "Skipping vendor check because the Prow pre-submit job does not change vendoring."; \ | ||||||
|  | 		elif ! GO111MODULE=on go mod vendor; then \ | ||||||
|  | 			echo "ERROR: vendor check failed."; \ | ||||||
|  | 			false; \ | ||||||
|  | 		elif [ $$(git status --porcelain -- vendor | wc -l) -gt 0 ]; then \ | ||||||
|  | 			echo "ERROR: vendor directory *not* up-to-date, it did get modified by 'GO111MODULE=on go mod vendor':"; \ | ||||||
|  | 			git status -- vendor; \ | ||||||
|  | 			git diff -- vendor; \ | ||||||
|  | 			false; \ | ||||||
|  | 		fi; \ | ||||||
|  | 	 fi; | ||||||
| 
 | 
 | ||||||
| .PHONY: test-subtree | .PHONY: test-subtree | ||||||
| test: test-subtree | test: test-subtree | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue