# menu-admin — container image builds. # # Built with Podman/Buildah, not Docker, from the committed tree # (`git archive HEAD`) and tagged with that commit, so a deploy ships exactly # what git knows about. deploy.sh pushes first and refuses a dirty tree. COMMIT ?= $(shell git rev-parse --short HEAD) # The deploy host (emily) is aarch64, so that is the default target: the image # is built for the machine it runs on, not the one running make. Podman carries # no built-in QEMU (unlike docker buildx), so a foreign platform needs binfmt # handlers on this host — qemu-user-binfmt is installed here. Override with e.g. # `make build-production PLATFORM=linux/amd64`. PLATFORM ?= linux/arm64 IMAGE ?= registry.tanshu.com/menu-admin .PHONY: build-production build-production: ## Build HEAD with podman, tag :$(COMMIT) + :latest, and push @echo "==> podman build --platform $(PLATFORM) → $(IMAGE):$(COMMIT) + :latest" @git archive --format=tar HEAD | podman build \ --platform $(PLATFORM) \ --tag $(IMAGE):$(COMMIT) \ --tag $(IMAGE):latest \ --pull=always \ - || { \ echo "✗ podman build failed."; \ echo " Cross-platform builds need binfmt on this host (podman has no built-in QEMU):"; \ echo " sudo apt install qemu-user-binfmt # or qemu-user-static"; \ exit 1; \ } podman push $(IMAGE):$(COMMIT) podman push $(IMAGE):latest .PHONY: build-check build-check: ## Compile check from HEAD with podman, nothing pushed @echo "==> podman build --platform $(PLATFORM) (no push)" git archive --format=tar HEAD | podman build \ --platform $(PLATFORM) \ --tag localhost/menu-admin:check \ --pull=always \ -