make release builds, smoke-tests and pushes amd64 (on fsn1app1 via DOCKER_HOST) and arm64 (local), joins them into latest and dated multi-arch manifests, and commits the day's logs. Logic lives in bin/; the Makefile only wires dependencies so -j2 runs the arches in parallel.
48 lines
1.2 KiB
Makefile
48 lines
1.2 KiB
Makefile
# Build and publish the base image. All logic lives in bin/; targets here
|
|
# only wire dependencies and export configuration.
|
|
#
|
|
# make release build, test, push both arches, tag, commit logs
|
|
# make -j2 release same, with the two arches in parallel
|
|
# make build build for this machine's arch only
|
|
# make test run the image smoke test for this machine's arch
|
|
|
|
IMAGE ?= git.eeqj.de/sneak/baseimage
|
|
DATE ?= $(shell date +%Y-%m-%d)
|
|
ARCHES ?= amd64 arm64
|
|
|
|
# Docker daemon to use per arch. Empty means the local daemon.
|
|
DOCKER_HOST_amd64 ?= ssh://root@fsn1app1
|
|
DOCKER_HOST_arm64 ?=
|
|
|
|
NATIVE_ARCH := $(shell bin/native-arch)
|
|
|
|
export IMAGE DATE ARCHES DOCKER_HOST_amd64 DOCKER_HOST_arm64
|
|
|
|
.PHONY: release manifest commit-logs build test push clean \
|
|
$(ARCHES:%=build-%) $(ARCHES:%=test-%) $(ARCHES:%=push-%)
|
|
|
|
release: commit-logs
|
|
|
|
commit-logs: manifest
|
|
bin/commit-logs
|
|
|
|
manifest: $(ARCHES:%=push-%)
|
|
bin/manifest
|
|
|
|
# Static pattern rules: plain pattern rules are skipped for .PHONY targets.
|
|
$(ARCHES:%=push-%): push-%: test-%
|
|
bin/push $*
|
|
|
|
$(ARCHES:%=test-%): test-%: build-%
|
|
bin/test $*
|
|
|
|
$(ARCHES:%=build-%): build-%:
|
|
bin/build $*
|
|
|
|
build: build-$(NATIVE_ARCH)
|
|
test: test-$(NATIVE_ARCH)
|
|
push: push-$(NATIVE_ARCH)
|
|
|
|
clean:
|
|
bin/clean
|