diff --git a/Dockerfile b/Dockerfile index d48cb59..61f651c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,14 @@ # syntax=docker/dockerfile:1.7 -FROM golang:1.22-bookworm AS build +ARG BUILDPLATFORM=linux/amd64 +ARG TARGETPLATFORM +ARG TARGETOS +ARG TARGETARCH -ARG TARGETOS=linux -ARG TARGETARCH=arm64 +FROM --platform=$BUILDPLATFORM golang:1.22-bookworm AS build + +ARG TARGETOS +ARG TARGETARCH WORKDIR /src COPY go.mod go.sum ./ diff --git a/Jenkinsfile b/Jenkinsfile index 2c87991..01eb234 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -194,26 +194,32 @@ PY } } - stage('Build & push image') { + stage('Build & push images') { steps { container('builder') { sh ''' set -euo pipefail VERSION_TAG="$(cut -d= -f2 build.env)" - docker buildx build \ - --platform linux/amd64,linux/arm64 \ - --tag "${IMAGE}:${VERSION_TAG}" \ - --tag "${IMAGE}:latest" \ - --target runtime \ - --push \ - . - docker buildx build \ - --platform linux/amd64,linux/arm64 \ - --tag "${SENTINEL_IMAGE}:${VERSION_TAG}" \ - --tag "${SENTINEL_IMAGE}:latest" \ - --target sentinel \ - --push \ - . + for arch in amd64 arm64; do + docker buildx build \ + --platform "linux/${arch}" \ + --build-arg TARGETOS=linux \ + --build-arg TARGETARCH="${arch}" \ + --tag "${IMAGE}:${VERSION_TAG}-${arch}" \ + --tag "${IMAGE}:latest-${arch}" \ + --target runtime \ + --push \ + . + docker buildx build \ + --platform "linux/${arch}" \ + --build-arg TARGETOS=linux \ + --build-arg TARGETARCH="${arch}" \ + --tag "${SENTINEL_IMAGE}:${VERSION_TAG}-${arch}" \ + --tag "${SENTINEL_IMAGE}:latest-${arch}" \ + --target sentinel \ + --push \ + . + done ''' } }