build.make: fix push-multiarch ambiguity
"make push-multiarch" matched both push-multiarch and push-%. This seems to be none-deterministic and in at least one repo (external-provisioner), make picked the wildcard rule which then failed because there is no "multiarch" command. This ambiguity gets resolved by instantiating the wildcard rules only for existing commands. The advantage also is that "make push-no-such-command" will fail with an obvious "No rule to make target 'push-no-such-command'" instead of attempting to build the command.
This commit is contained in:
@@ -71,7 +71,7 @@ BUILD_PLATFORMS =
|
|||||||
|
|
||||||
# This builds each command (= the sub-directories of ./cmd) for the target platform(s)
|
# This builds each command (= the sub-directories of ./cmd) for the target platform(s)
|
||||||
# defined by BUILD_PLATFORMS.
|
# defined by BUILD_PLATFORMS.
|
||||||
build-%: check-go-version-go
|
$(CMDS:%=build-%): build-%: check-go-version-go
|
||||||
mkdir -p bin
|
mkdir -p bin
|
||||||
echo '$(BUILD_PLATFORMS)' | tr ';' '\n' | while read -r os arch suffix; do \
|
echo '$(BUILD_PLATFORMS)' | tr ';' '\n' | while read -r os arch suffix; do \
|
||||||
if ! (set -x; CGO_ENABLED=0 GOOS="$$os" GOARCH="$$arch" go build $(GOFLAGS_VENDOR) -a -ldflags '-X main.version=$(REV) -extldflags "-static"' -o "./bin/$*$$suffix" ./cmd/$*); then \
|
if ! (set -x; CGO_ENABLED=0 GOOS="$$os" GOARCH="$$arch" go build $(GOFLAGS_VENDOR) -a -ldflags '-X main.version=$(REV) -extldflags "-static"' -o "./bin/$*$$suffix" ./cmd/$*); then \
|
||||||
@@ -80,10 +80,10 @@ build-%: check-go-version-go
|
|||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
|
|
||||||
container-%: build-%
|
$(CMDS:%=container-%): container-%: build-%
|
||||||
docker build -t $*:latest -f $(shell if [ -e ./cmd/$*/Dockerfile ]; then echo ./cmd/$*/Dockerfile; else echo Dockerfile; fi) --label revision=$(REV) .
|
docker build -t $*:latest -f $(shell if [ -e ./cmd/$*/Dockerfile ]; then echo ./cmd/$*/Dockerfile; else echo Dockerfile; fi) --label revision=$(REV) .
|
||||||
|
|
||||||
push-%: container-%
|
$(CMDS:%=push-%): push-%: container-%
|
||||||
set -ex; \
|
set -ex; \
|
||||||
push_image () { \
|
push_image () { \
|
||||||
docker tag $*:latest $(IMAGE_NAME):$$tag; \
|
docker tag $*:latest $(IMAGE_NAME):$$tag; \
|
||||||
@@ -120,7 +120,7 @@ DOCKER_BUILDX_CREATE_ARGS ?=
|
|||||||
# BUILD_PLATFORMS determines which individual images are included in the multiarch image.
|
# BUILD_PLATFORMS determines which individual images are included in the multiarch image.
|
||||||
# PULL_BASE_REF must be set to 'master', 'release-x.y', or a tag name, and determines
|
# PULL_BASE_REF must be set to 'master', 'release-x.y', or a tag name, and determines
|
||||||
# the tag for the resulting multiarch image.
|
# the tag for the resulting multiarch image.
|
||||||
push-multiarch-%: check-pull-base-ref build-%
|
$(CMDS:%=push-multiarch-%): push-multiarch-%: check-pull-base-ref build-%
|
||||||
set -ex; \
|
set -ex; \
|
||||||
DOCKER_CLI_EXPERIMENTAL=enabled; \
|
DOCKER_CLI_EXPERIMENTAL=enabled; \
|
||||||
export DOCKER_CLI_EXPERIMENTAL; \
|
export DOCKER_CLI_EXPERIMENTAL; \
|
||||||
|
Reference in New Issue
Block a user