Build multi-arch container images across stack
diff --git a/apps/bwolf-gandi/.gitignore b/apps/bwolf-gandi/.gitignore
index fcff3af..b90f1c2 100644
--- a/apps/bwolf-gandi/.gitignore
+++ b/apps/bwolf-gandi/.gitignore
@@ -1,2 +1,3 @@
cert-manager-webhook-gandi
-webhook
+webhook_arm64
+webhook_amd64
diff --git a/apps/bwolf-gandi/Dockerfile b/apps/bwolf-gandi/Dockerfile
index 6fee6aa..df46fc1 100644
--- a/apps/bwolf-gandi/Dockerfile
+++ b/apps/bwolf-gandi/Dockerfile
@@ -1,8 +1,10 @@
FROM alpine:3.9
+ARG TARGETARCH
+
RUN apk add --no-cache ca-certificates
-COPY webhook /usr/local/bin/webhook
+COPY webhook_${TARGETARCH} /usr/local/bin/webhook
RUN chmod +x /usr/local/bin/webhook
ENTRYPOINT ["webhook"]
diff --git a/apps/bwolf-gandi/Makefile b/apps/bwolf-gandi/Makefile
index cdfc936..2a09874 100644
--- a/apps/bwolf-gandi/Makefile
+++ b/apps/bwolf-gandi/Makefile
@@ -2,23 +2,26 @@
IMAGE_TAG := "v0.2.0"
checkout:
- git clone --depth 1 --branch v0.2.0 https://github.com/bwolf/cert-manager-webhook-gandi.git
+ git clone --depth 1 --branch $(IMAGE_TAG) https://github.com/bwolf/cert-manager-webhook-gandi.git
clean:
- rm -f webhook
+ rm -f webhook_*
-build: export CGO_ENABLED=0
-build: export GO111MODULE=on
-build: clean
- cd cert-manager-webhook-gandi && go build -o ../webhook -ldflags '-w -extldflags "-static"' .
+build_arm64: export CGO_ENABLED=0
+build_arm64: export GO111MODULE=on
+build_arm64: export GOOS=linux
+build_arm64: export GOARCH=arm64
+build_arm64: clean
+ cd cert-manager-webhook-gandi && go build -o ../webhook_arm64 -ldflags '-w -extldflags "-static"' .
-image: build
- docker build --tag=$(IMAGE_NAME):$(IMAGE_TAG) . --platform=linux/arm64
+build_amd64: export CGO_ENABLED=0
+build_amd64: export GO111MODULE=on
+build_amd64: export GOOS=linux
+build_amd64: export GOARCH=amd64
+build_amd64: clean
+ cd cert-manager-webhook-gandi && go build -o ../webhook_amd64 -ldflags '-w -extldflags "-static"' .
-push: image
- docker push $(IMAGE_NAME):$(IMAGE_TAG)
+build: clean build_arm64 build_amd64
-
-push_arm64: export GOOS=linux
-push_arm64: export GOARCH=arm64
-push_arm64: push
+push: build
+ docker buildx build --tag=$(IMAGE_NAME):$(IMAGE_TAG) . --platform=linux/arm64,linux/amd64 --push
diff --git a/apps/maddy/auth/.gitignore b/apps/maddy/auth/.gitignore
index cd8d050..824d9a9 100644
--- a/apps/maddy/auth/.gitignore
+++ b/apps/maddy/auth/.gitignore
@@ -1 +1,2 @@
-auth-smtp
+auth-smtp_amd64
+auth-smtp_arm64
diff --git a/apps/maddy/auth/Dockerfile b/apps/maddy/auth/Dockerfile
index 3b1168d..342f121 100644
--- a/apps/maddy/auth/Dockerfile
+++ b/apps/maddy/auth/Dockerfile
@@ -1,3 +1,6 @@
FROM giolekva/maddy:v0.4.4
-COPY auth-smtp /usr/bin/auth-smtp
+ARG TARGETARCH
+
+COPY auth-smtp_${TARGETARCH} /usr/bin/auth-smtp
+RUN chmod +x /usr/bin/auth-smtp
diff --git a/apps/maddy/auth/Makefile b/apps/maddy/auth/Makefile
index 7bd9ea3..2d7d61f 100644
--- a/apps/maddy/auth/Makefile
+++ b/apps/maddy/auth/Makefile
@@ -1,17 +1,21 @@
clean:
- rm -f auth-smtp
+ rm -f auth-smtp_*
-build: clean
- go build -o auth-smtp *.go
+build_arm64: export CGO_ENABLED=0
+build_arm64: export GO111MODULE=on
+build_arm64: export GOOS=linux
+build_arm64: export GOARCH=arm64
+build_arm64:
+ go build -o auth-smtp_arm64 *.go
-image: build
- docker build --tag=giolekva/maddy-auth-smtp:v0.4.4 . --platform=linux/arm64
+build_amd64: export CGO_ENABLED=0
+build_amd64: export GO111MODULE=on
+build_amd64: export GOOS=linux
+build_amd64: export GOARCH=amd64
+build_amd64:
+ go build -o auth-smtp_amd64 *.go
-push: image
- docker push giolekva/maddy-auth-smtp:v0.4.4
+build: clean build_arm64 build_amd64
-push_arm64: export GOOS=linux
-push_arm64: export GOARCH=arm64
-push_arm64: export CGO_ENABLED=0
-push_arm64: export GO111MODULE=on
-push_arm64: push
+push: build
+ docker buildx build --tag=giolekva/maddy-auth-smtp:v0.4.4 . --platform=linux/arm64,linux/amd64 --push
diff --git a/apps/maddy/web/.gitignore b/apps/maddy/web/.gitignore
index 797200e..06ccfe3 100644
--- a/apps/maddy/web/.gitignore
+++ b/apps/maddy/web/.gitignore
@@ -1 +1,2 @@
-maddy-web
+maddy-web_arm64
+maddy-web_amd64
diff --git a/apps/maddy/web/Dockerfile b/apps/maddy/web/Dockerfile
index 8c057e1..0b38e18 100644
--- a/apps/maddy/web/Dockerfile
+++ b/apps/maddy/web/Dockerfile
@@ -1,4 +1,6 @@
FROM giolekva/maddy:v0.4.4 AS maddy
-COPY maddy-web /usr/bin
+ARG TARGETARCH
+
+COPY maddy-web_${TARGETARCH} /usr/bin/maddy-web
RUN chmod +x /usr/bin/maddy-web
diff --git a/apps/maddy/web/Makefile b/apps/maddy/web/Makefile
index 2054935..4ab1785 100644
--- a/apps/maddy/web/Makefile
+++ b/apps/maddy/web/Makefile
@@ -1,17 +1,21 @@
clean:
- rm -f maddy-web
+ rm -f maddy-web_*
-build: clean
- go build -o maddy-web *.go
+build_arm64: export CGO_ENABLED=0
+build_arm64: export GO111MODULE=on
+build_arm64: export GOOS=linux
+build_arm64: export GOARCH=arm64
+build_arm64:
+ go build -o maddy-web_arm64 *.go
-image: build
- docker build --tag=giolekva/maddy-web:latest . --platform=linux/arm64
+build_amd64: export CGO_ENABLED=0
+build_amd64: export GO111MODULE=on
+build_amd64: export GOOS=linux
+build_amd64: export GOARCH=amd64
+build_amd64:
+ go build -o maddy-web_amd64 *.go
-push: image
- docker push giolekva/maddy-web:latest
+build: clean build_arm64 build_amd64
-push_arm64: export GOOS=linux
-push_arm64: export GOARCH=arm64
-push_arm64: export CGO_ENABLED=0
-push_arm64: export GO111MODULE=on
-push_arm64: push
+push: build
+ docker buildx build --tag=giolekva/maddy-web:latest . --platform=linux/arm64,linux/amd64 --push
diff --git a/apps/matrix/capture-config/.gitignore b/apps/matrix/capture-config/.gitignore
index 1ebbf4c..82a3515 100644
--- a/apps/matrix/capture-config/.gitignore
+++ b/apps/matrix/capture-config/.gitignore
@@ -1 +1,2 @@
-capture-config
+capture-config_arm64
+capture-config_amd64
diff --git a/apps/matrix/capture-config/Dockerfile b/apps/matrix/capture-config/Dockerfile
index 87f358c..bcecf7b 100644
--- a/apps/matrix/capture-config/Dockerfile
+++ b/apps/matrix/capture-config/Dockerfile
@@ -1,4 +1,6 @@
FROM alpine:latest
-COPY capture-config /usr/bin
+ARG TARGETARCH
+
+COPY capture-config_${TARGETARCH} /usr/bin/capture-config
RUN chmod +x /usr/bin/capture-config
diff --git a/apps/matrix/capture-config/Makefile b/apps/matrix/capture-config/Makefile
index 6e3ddec..c05687d 100644
--- a/apps/matrix/capture-config/Makefile
+++ b/apps/matrix/capture-config/Makefile
@@ -1,17 +1,21 @@
clean:
- rm -f capture-config
+ rm -f capture-config_*
-build: clean
- go build -o capture-config *.go
+build_arm64: export CGO_ENABLED=0
+build_arm64: export GO111MODULE=on
+build_arm64: export GOOS=linux
+build_arm64: export GOARCH=arm64
+build_arm64:
+ go build -o capture-config_arm64 *.go
-image: build
- docker build --tag=giolekva/capture-config:latest . --platform=linux/arm64
+build_amd64: export CGO_ENABLED=0
+build_amd64: export GO111MODULE=on
+build_amd64: export GOOS=linux
+build_amd64: export GOARCH=amd64
+build_amd64:
+ go build -o capture-config_amd64 *.go
-push: image
- docker push giolekva/capture-config:latest
+build: clean build_arm64 build_amd64
-push_arm64: export GOOS=linux
-push_arm64: export GOARCH=arm64
-push_arm64: export CGO_ENABLED=0
-push_arm64: export GO111MODULE=on
-push_arm64: push
+push: build
+ docker buildx build --tag=giolekva/capture-config:latest . --platform=linux/arm64,linux/amd64 --push