forked from Probely/farcaster-onprem-agent
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
67 lines (53 loc) · 1.95 KB
/
Makefile
File metadata and controls
67 lines (53 loc) · 1.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
CONTAINER := farcaster-onprem-agent
REPO := probely/$(CONTAINER)
PLATFORMS := linux/arm64,linux/amd64
LOCAL_PLATFORM := linux/$(shell uname -m | sed 's/x86_64/amd64/; s/aarch64/arm64/')
VERSION ?= $(error VERSION is undefined. Usage: VERSION=x.y.z make [target])
VER_MAJOR := $(shell echo '$(VERSION)' | cut -d. -f1)
VER_MINOR := $(shell echo '$(VERSION)' | cut -d. -f2)
TAGS := -t $(REPO):v$(VER_MAJOR) \
-t $(REPO):v$(VER_MAJOR).$(VER_MINOR) \
-t $(REPO):v$(VERSION)
MODERN_TAGS := -t $(REPO):v$(VER_MAJOR)-modern \
-t $(REPO):v$(VER_MAJOR).$(VER_MINOR)-modern \
-t $(REPO):v$(VERSION)-modern
BUILDX_ARGS := --builder multiarch \
--build-arg "VERSION=$(VERSION)"
MODERN_BUILDX_ARGS = \
--build-arg RUST_BUILDER_BASE=rust:1-trixie \
--build-arg GO_BUILDER_BASE=golang:1.24-trixie \
--build-arg FINAL_BASE=ubuntu:25.04 \
--build-arg GCC_VERSION=14
.PHONY: all build build-local build-modern build-local-modern clean prepare check-version
all: build
build: check-version prepare
docker buildx build $(BUILDX_ARGS) \
--platform $(PLATFORMS) \
$(TAGS) \
--push .
build-local: check-version prepare
docker buildx build $(BUILDX_ARGS) \
--platform $(LOCAL_PLATFORM) \
-t $(REPO):v$(VERSION) \
--load .
build-modern: check-version prepare
docker buildx build $(BUILDX_ARGS) $(MODERN_BUILDX_ARGS) \
--platform $(PLATFORMS) \
$(MODERN_TAGS) \
--push .
build-local-modern: check-version prepare
docker buildx build $(BUILDX_ARGS) $(MODERN_BUILDX_ARGS) \
--platform $(LOCAL_PLATFORM) \
-t $(REPO):v$(VERSION)-modern \
--load .
clean:
docker buildx --builder multiarch prune -f
prepare:
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker buildx create --name multiarch --driver docker-container --use || true
docker buildx inspect --builder multiarch --bootstrap
check-version:
@if ! echo "$(VERSION)" | grep -Eq '^[0-9]+\.[0-9]+\.[0-9]+$$'; then \
echo "ERROR: VERSION must be a valid semver (x.y.z)"; \
exit 1; \
fi