Bläddra i källkod

Merge pull request #46312 from rumpl/test-download-distribution

test/integration: Download the registry binary
Sebastiaan van Stijn 1 år sedan
förälder
incheckning
56597db804
1 ändrade filer med 14 tillägg och 9 borttagningar
  1. 14 9
      Dockerfile

+ 14 - 9
Dockerfile

@@ -19,6 +19,12 @@ ARG SYSTEMD="false"
 ARG DEBIAN_FRONTEND=noninteractive
 ARG DOCKER_STATIC=1
 
+# REGISTRY_VERSION specifies the version of the registry to download from
+# https://hub.docker.com/r/distribution/distribution. This version of
+# the registry is used to test schema 2 manifests. Generally,  the version
+# specified here should match a current release.
+ARG REGISTRY_VERSION=2.8.2
+
 # cross compilation helper
 FROM --platform=$BUILDPLATFORM tonistiigi/xx:${XX_VERSION} AS xx
 
@@ -56,11 +62,7 @@ RUN git init . && git remote add origin "https://github.com/distribution/distrib
 
 FROM base AS registry
 WORKDIR /go/src/github.com/docker/distribution
-# REGISTRY_VERSION specifies the version of the registry to build and install
-# from the https://github.com/docker/distribution repository. This version of
-# the registry is used to test both schema 1 and schema 2 manifests. Generally,
-# the version specified here should match a current release.
-ARG REGISTRY_VERSION=v2.8.2
+
 # REGISTRY_VERSION_SCHEMA1 specifies the version of the registry to build and
 # install from the https://github.com/docker/distribution repository. This is
 # an older (pre v2.3.0) version of the registry that only supports schema1
@@ -73,11 +75,10 @@ RUN --mount=from=registry-src,src=/usr/src/registry,rw \
     --mount=type=cache,target=/go/pkg/mod \
     --mount=type=tmpfs,target=/go/src <<EOT
   set -ex
-  git fetch -q --depth 1 origin "${REGISTRY_VERSION}" +refs/tags/*:refs/tags/*
-  git checkout -q FETCH_HEAD
   export GOPATH="/go/src/github.com/docker/distribution/Godeps/_workspace:$GOPATH"
-  CGO_ENABLED=0 xx-go build -o /build/registry-v2 -v ./cmd/registry
-  xx-verify /build/registry-v2
+  # Make the /build directory no matter what so that it doesn't fail on arm64 or
+  # any other platform where we don't build this registry
+  mkdir /build
   case $TARGETPLATFORM in
     linux/amd64|linux/arm/v7|linux/ppc64le|linux/s390x)
       git fetch -q --depth 1 origin "${REGISTRY_VERSION_SCHEMA1}" +refs/tags/*:refs/tags/*
@@ -88,6 +89,9 @@ RUN --mount=from=registry-src,src=/usr/src/registry,rw \
   esac
 EOT
 
+FROM distribution/distribution:$REGISTRY_VERSION AS registry-v2
+RUN mkdir /build && mv /bin/registry /build/registry-v2
+
 # go-swagger
 FROM base AS swagger-src
 WORKDIR /usr/src/swagger
@@ -449,6 +453,7 @@ COPY --link --from=tomll         /build/ /usr/local/bin/
 COPY --link --from=gowinres      /build/ /usr/local/bin/
 COPY --link --from=tini          /build/ /usr/local/bin/
 COPY --link --from=registry      /build/ /usr/local/bin/
+COPY --link --from=registry-v2   /build/ /usr/local/bin/
 
 # Skip the CRIU stage for now, as the opensuse package repository is sometimes
 # unstable, and we're currently not using it in CI.