cadvisor-multi-arch/Makefile

86 lines
2.1 KiB
Makefile

PROJECT = cadvisor
DOCKER_TAG ?= $(PROJECT)-${USER}
VERSION ?= master
# Extracted src directory
SRC_DIR = src/$(PROJECT)-$(subst v,,$(VERSION))
# Multi-arch targets are generated from this
TARGETS = cadvisor-amd64 cadvisor-arm cadvisor-arm64
# Default make target will run tests
.DEFAULT_GOAL = build
.PHONY: test
test:
@echo "no tests"
# Build all static Minitor binaries
.PHONY: all
all: $(TARGETS)
$(SRC_DIR):
mkdir -p ./src
git clone --depth=1 --branch $(VERSION) https://github.com/google/cadvisor.git $(SRC_DIR)
.PHONY: clean
clean:
rm -f ./src
.PHONY: build
build: $(SRC_DIR)
./build.sh "$(DOCKER_TAG)" "$(SRC_DIR)"
## Multi-arch targets
$(TARGETS): $(SRC_DIR)
GOARCH=$(lastword $(subst -, ,$(@))) \
./build.sh "$(DOCKER_TAG)" "$(SRC_DIR)"
.PHONY: docker-build-env
docker-build-env: $(SRC_DIR)
docker build -f Dockerfile.build-env . -t $(DOCKER_TAG)-build-env
.PHONY: build-in-docker
build-in-docker: docker-build-env
docker run --rm \
-v $(shell pwd)/$(SRC_DIR):/go/src/github.com/google/cadvisor \
-e GOARCH=amd64 \
$(DOCKER_TAG)-build-env \
make build \
&& cp $(SRC_DIR)/$(PROJECT) ./$(PROJECT)-amd64
.PHONY: build-in-docker-arm
build-in-docker-arm: docker-build-env
docker run --rm \
-v $(shell pwd)/$(SRC_DIR):/go/src/github.com/google/cadvisor \
-e GOARCH=arm \
$(DOCKER_TAG)-build-env \
make build \
&& cp $(SRC_DIR)/$(PROJECT) ./$(PROJECT)-arm
.PHONY: build-in-docker-arm64
build-in-docker-arm64: docker-build-env
docker run --rm \
-v $(shell pwd)/$(SRC_DIR):/go/src/github.com/google/cadvisor \
-e GOARCH=arm64 \
$(DOCKER_TAG)-build-env \
make build \
&& cp $(SRC_DIR)/$(PROJECT) ./$(PROJECT)-arm64
# Arch specific docker build targets
.PHONY: docker-build
docker-build: cadvisor-amd64
docker build . -t ${DOCKER_TAG}
.PHONY: docker-build-arm
docker-build-arm: cadvisor-arm
docker build \
--build-arg REPO=arm32v7 \
--build-arg GOARCH=arm\
. -t ${DOCKER_TAG}-arm
.PHONY: docker-build-arm64
docker-build-arm64: cadvisor-arm64
docker build \
--build-arg REPO=arm64v8 \
--build-arg GOARCH=arm64 \
. -t ${DOCKER_TAG}-arm64