commit
						7846381718
					
				|  | @ -0,0 +1 @@ | ||||||
|  | bin/ | ||||||
|  | @ -92,7 +92,6 @@ jobs: | ||||||
|           draft: true |           draft: true | ||||||
|           files: | |           files: | | ||||||
|             bin/*.tar.gz |             bin/*.tar.gz | ||||||
|             bin/*.zip |  | ||||||
|             bin/*.sha256 |             bin/*.sha256 | ||||||
|         env: |         env: | ||||||
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||||
|  |  | ||||||
							
								
								
									
										67
									
								
								Dockerfile
								
								
								
								
							
							
						
						
									
										67
									
								
								Dockerfile
								
								
								
								
							|  | @ -1,49 +1,58 @@ | ||||||
| # syntax=docker/dockerfile:1.3 | # syntax=docker/dockerfile:1 | ||||||
| 
 | 
 | ||||||
| ARG GO_VERSION=1.17 | ARG GO_VERSION=1.17 | ||||||
| ARG GORELEASER_XX_VERSION=1.2.5 | ARG XX_VERSION=1.1.0 | ||||||
| 
 | 
 | ||||||
| FROM --platform=$BUILDPLATFORM crazymax/goreleaser-xx:${GORELEASER_XX_VERSION} AS goreleaser-xx | FROM --platform=$BUILDPLATFORM tonistiigi/xx:${XX_VERSION} AS xx | ||||||
| FROM --platform=$BUILDPLATFORM golang:${GO_VERSION}-alpine AS base | FROM --platform=$BUILDPLATFORM golang:${GO_VERSION}-alpine AS base | ||||||
| COPY --from=goreleaser-xx / / | COPY --from=xx / / | ||||||
| RUN apk add --no-cache file git | RUN apk add --no-cache bash coreutils file git | ||||||
| WORKDIR /src |  | ||||||
| 
 |  | ||||||
| FROM base AS build |  | ||||||
| ENV GO111MODULE=auto | ENV GO111MODULE=auto | ||||||
| ENV CGO_ENABLED=0 | ENV CGO_ENABLED=0 | ||||||
| # GIT_REF is used by goreleaser-xx to handle the proper git ref when available. | WORKDIR /src | ||||||
| # It will fallback to the working tree info if empty and use "git tag --points-at" | 
 | ||||||
| # or "git describe" to define the version info. | FROM base AS version | ||||||
| ARG GIT_REF | ARG PKG=github.com/distribution/distribution/v3 | ||||||
|  | RUN --mount=target=. \ | ||||||
|  |   VERSION=$(git describe --match 'v[0-9]*' --dirty='.m' --always --tags) REVISION=$(git rev-parse HEAD)$(if ! git diff --no-ext-diff --quiet --exit-code; then echo .m; fi); \ | ||||||
|  |   echo "-X ${PKG}/version.Version=${VERSION#v} -X ${PKG}/version.Revision=${REVISION} -X ${PKG}/version.Package=${PKG}" | tee /tmp/.ldflags; \ | ||||||
|  |   echo -n "${VERSION}" | tee /tmp/.version; | ||||||
|  | 
 | ||||||
|  | FROM base AS build | ||||||
| ARG TARGETPLATFORM | ARG TARGETPLATFORM | ||||||
| ARG PKG="github.com/distribution/distribution/v3" | ARG LDFLAGS="-s -w" | ||||||
| ARG BUILDTAGS="include_oss include_gcs" | ARG BUILDTAGS="include_oss include_gcs" | ||||||
| RUN --mount=type=bind,target=/src,rw \ | RUN --mount=type=bind,target=/src,rw \ | ||||||
|   --mount=type=cache,target=/root/.cache/go-build \ |   --mount=type=cache,target=/root/.cache/go-build \ | ||||||
|   --mount=target=/go/pkg/mod,type=cache \ |   --mount=target=/go/pkg/mod,type=cache \ | ||||||
|   goreleaser-xx --debug \ |   --mount=type=bind,source=/tmp/.ldflags,target=/tmp/.ldflags,from=version \ | ||||||
|     --name="registry" \ |   set -x ; xx-go build -trimpath -ldflags "$(cat /tmp/.ldflags) ${LDFLAGS}" -o /usr/bin/registry ./cmd/registry \ | ||||||
|     --dist="/out" \ |   && xx-verify --static /usr/bin/registry | ||||||
|     --main="./cmd/registry" \ |  | ||||||
|     --flags="-v" \ |  | ||||||
|     --ldflags="-s -w -X '$PKG/version.Version={{.Version}}' -X '$PKG/version.Revision={{.Commit}}' -X '$PKG/version.Package=$PKG'" \ |  | ||||||
|     --tags="$BUILDTAGS" \ |  | ||||||
|     --files="LICENSE" \ |  | ||||||
|     --files="README.md" |  | ||||||
| 
 |  | ||||||
| FROM scratch AS artifact |  | ||||||
| COPY --from=build /out/*.tar.gz / |  | ||||||
| COPY --from=build /out/*.zip / |  | ||||||
| COPY --from=build /out/*.sha256 / |  | ||||||
| 
 | 
 | ||||||
| FROM scratch AS binary | FROM scratch AS binary | ||||||
| COPY --from=build /usr/local/bin/registry* / | COPY --from=build /usr/bin/registry / | ||||||
|  | 
 | ||||||
|  | FROM base AS releaser | ||||||
|  | ARG TARGETOS | ||||||
|  | ARG TARGETARCH | ||||||
|  | ARG TARGETVARIANT | ||||||
|  | WORKDIR /work | ||||||
|  | RUN --mount=from=binary,target=/build \ | ||||||
|  |   --mount=type=bind,target=/src \ | ||||||
|  |   --mount=type=bind,source=/tmp/.version,target=/tmp/.version,from=version \ | ||||||
|  |   VERSION=$(cat /tmp/.version) \ | ||||||
|  |   && mkdir -p /out \ | ||||||
|  |   && cp /build/registry /src/README.md /src/LICENSE . \ | ||||||
|  |   && tar -czvf "/out/registry_${VERSION#v}_${TARGETOS}_${TARGETARCH}${TARGETVARIANT}.tar.tgz" * \ | ||||||
|  |   && sha256sum -z "/out/registry_${VERSION#v}_${TARGETOS}_${TARGETARCH}${TARGETVARIANT}.tar.tgz" | awk '{ print $1 }' > "/out/registry_${VERSION#v}_${TARGETOS}_${TARGETARCH}${TARGETVARIANT}.tar.tgz.sha256" | ||||||
|  | 
 | ||||||
|  | FROM scratch AS artifact | ||||||
|  | COPY --from=releaser /out / | ||||||
| 
 | 
 | ||||||
| FROM alpine:3.15 | FROM alpine:3.15 | ||||||
| RUN apk add --no-cache ca-certificates | RUN apk add --no-cache ca-certificates | ||||||
| COPY cmd/registry/config-dev.yml /etc/docker/registry/config.yml | COPY cmd/registry/config-dev.yml /etc/docker/registry/config.yml | ||||||
| COPY --from=build /usr/local/bin/registry /bin/registry | COPY --from=binary /registry /bin/registry | ||||||
| VOLUME ["/var/lib/registry"] | VOLUME ["/var/lib/registry"] | ||||||
| EXPOSE 5000 | EXPOSE 5000 | ||||||
| ENTRYPOINT ["registry"] | ENTRYPOINT ["registry"] | ||||||
|  |  | ||||||
|  | @ -1,24 +1,7 @@ | ||||||
| // GITHUB_REF is the actual ref that triggers the workflow |  | ||||||
| // https://docs.github.com/en/actions/learn-github-actions/environment-variables#default-environment-variables |  | ||||||
| variable "GITHUB_REF" { |  | ||||||
|   default = "" |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| target "_common" { |  | ||||||
|   args = { |  | ||||||
|     GIT_REF = GITHUB_REF |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| group "default" { | group "default" { | ||||||
|   targets = ["image-local"] |   targets = ["image-local"] | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Special target: https://github.com/docker/metadata-action#bake-definition |  | ||||||
| target "docker-metadata-action" { |  | ||||||
|   tags = ["registry:local"] |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| group "validate" { | group "validate" { | ||||||
|   targets = ["validate-vendor"] |   targets = ["validate-vendor"] | ||||||
| } | } | ||||||
|  | @ -47,13 +30,11 @@ target "mod-outdated" { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| target "binary" { | target "binary" { | ||||||
|   inherits = ["_common"] |  | ||||||
|   target = "binary" |   target = "binary" | ||||||
|   output = ["./bin"] |   output = ["./bin"] | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| target "artifact" { | target "artifact" { | ||||||
|   inherits = ["_common"] |  | ||||||
|   target = "artifact" |   target = "artifact" | ||||||
|   output = ["./bin"] |   output = ["./bin"] | ||||||
| } | } | ||||||
|  | @ -70,8 +51,13 @@ target "artifact-all" { | ||||||
|   ] |   ] | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // Special target: https://github.com/docker/metadata-action#bake-definition | ||||||
|  | target "docker-metadata-action" { | ||||||
|  |   tags = ["registry:local"] | ||||||
|  | } | ||||||
|  | 
 | ||||||
| target "image" { | target "image" { | ||||||
|   inherits = ["_common", "docker-metadata-action"] |   inherits = ["docker-metadata-action"] | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| target "image-local" { | target "image-local" { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue