Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

ci: linux/amd64 and linux/arm64 multi platform image #5799

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions kustomize.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
# Copyright 2022 The Kubernetes Authors.
# SPDX-License-Identifier: Apache-2.0
ARG TARGETARCH TARGETOS

# build
FROM public.ecr.aws/docker/library/golang:1.22.7-bullseye as builder
FROM --platform=${BUILDPLATFORM} public.ecr.aws/docker/library/golang:1.22.7-bullseye as builder
ARG VERSION
ARG COMMIT
ARG DATE
RUN mkdir /build
ADD . /build/
WORKDIR /build/kustomize
RUN CGO_ENABLED=0 GO111MODULE=on go build \
RUN CGO_ENABLED=0 GO111MODULE=on GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build \
-ldflags="-s -X sigs.k8s.io/kustomize/api/provenance.version=${VERSION} \
-X sigs.k8s.io/kustomize/api/provenance.buildDate=${DATE}"

Expand Down
17 changes: 16 additions & 1 deletion releasing/cloudbuild_kustomize_image.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,26 @@ steps:
- "PROJECT_ID=$PROJECT_ID"
- "_GIT_TAG=$_GIT_TAG"
- "_PULL_BASE_REF=$_PULL_BASE_REF"
# We need to use bash to configure the build date and version properly.
- name: "gcr.io/cloud-builders/docker"
entrypoint: /bin/bash
args:
- -c
- >
docker
buildx
create
--name
builder
--use
--bootstrap
# We need to use bash to configure the build date and version properly.
- name: "gcr.io/cloud-builders/docker"
entrypoint: /bin/bash
args:
- -c
- >
docker
buildx
build
-t
gcr.io/$PROJECT_ID/kustomize:${_GIT_TAG}
Expand All @@ -29,6 +42,8 @@ steps:
COMMIT=$(git rev-parse HEAD)
--build-arg
DATE=$(date -u +%FT%TZ)
--platform
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like there is no --platform option for docker build.
Are you trying to use the buildx command?

kobdotsh@instance-2:~$ sudo docker run -it --entrypoint=/bin/bash --rm gcr.io/cloud-builders/docker
root@9313da0b0c4d:/# docker build --help

Usage:  docker build [OPTIONS] PATH | URL | -

Build an image from a Dockerfile

Options:
      --add-host list           Add a custom host-to-IP mapping (host:ip)
      --build-arg list          Set build-time variables
      --cache-from strings      Images to consider as cache sources
      --cgroup-parent string    Optional parent cgroup for the container
      --compress                Compress the build context using gzip
      --cpu-period int          Limit the CPU CFS (Completely Fair Scheduler)
                                period
      --cpu-quota int           Limit the CPU CFS (Completely Fair Scheduler)
                                quota
  -c, --cpu-shares int          CPU shares (relative weight)
      --cpuset-cpus string      CPUs in which to allow execution (0-3, 0,1)
      --cpuset-mems string      MEMs in which to allow execution (0-3, 0,1)
      --disable-content-trust   Skip image verification (default true)
  -f, --file string             Name of the Dockerfile (Default is
                                'PATH/Dockerfile')
      --force-rm                Always remove intermediate containers
      --iidfile string          Write the image ID to the file
      --isolation string        Container isolation technology
      --label list              Set metadata for an image
  -m, --memory bytes            Memory limit
      --memory-swap bytes       Swap limit equal to memory plus swap: '-1' to
                                enable unlimited swap
      --network string          Set the networking mode for the RUN
                                instructions during build (default "default")
      --no-cache                Do not use cache when building the image
      --pull                    Always attempt to pull a newer version of the
                                image
  -q, --quiet                   Suppress the build output and print image ID
                                on success
      --rm                      Remove intermediate containers after a
                                successful build (default true)
      --security-opt strings    Security options
      --shm-size bytes          Size of /dev/shm
      --squash                  Squash newly built layers into a single new layer
  -t, --tag list                Name and optionally a tag in the 'name:tag' format
      --target string           Set the target build stage to build.
      --ulimit ulimit           Ulimit options (default [])

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@koba1t good catch! newer versions of docker has build automatically use buildx build, looks like the GCR image has an older version. I don't have a cloud build environment to test this, would you be able to verify this works? Thanks!

linux/amd64,linux/arm64
.

images:
Expand Down