From 2db685f9c64f0a469a1542ce68906a7c5d7a77e0 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sun, 14 Nov 2021 06:01:24 +0100 Subject: [PATCH] release apk, deb and rpm packages Signed-off-by: CrazyMax --- Dockerfile | 49 +++++++++++++++++++++++++++++++++++++-------- Makefile | 14 ++++++++++++- docker-bake.hcl | 53 ++++++++++++++++++++++++++++++++++++++++++++++++- hack/nfpm.yml | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 159 insertions(+), 10 deletions(-) create mode 100644 hack/nfpm.yml diff --git a/Dockerfile b/Dockerfile index 1f258aae067a..b1e4267b35c2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,7 @@ -# syntax=docker/dockerfile:1.3 +# syntax=docker/dockerfile:1.3-labs ARG GO_VERSION=1.17 +ARG NFPM_VERSION=v2.9.1 ARG DOCKERD_VERSION=20.10.8 FROM docker:$DOCKERD_VERSION AS dockerd-release @@ -16,24 +17,24 @@ RUN apk add --no-cache file git ENV GOFLAGS=-mod=vendor WORKDIR /src -FROM gobase AS buildx-version +FROM gobase AS version RUN --mount=target=. \ PKG=github.com/docker/buildx 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} -X ${PKG}/version.Revision=${REVISION} -X ${PKG}/version.Package=${PKG}" | tee /tmp/.ldflags; \ echo -n "${VERSION}" | tee /tmp/.version; -FROM gobase AS buildx-build +FROM gobase AS build ENV CGO_ENABLED=0 ARG LDFLAGS="-w -s" ARG TARGETPLATFORM RUN --mount=type=bind,target=. \ --mount=type=cache,target=/root/.cache \ --mount=type=cache,target=/go/pkg/mod \ - --mount=type=bind,source=/tmp/.ldflags,target=/tmp/.ldflags,from=buildx-version \ + --mount=type=bind,source=/tmp/.ldflags,target=/tmp/.ldflags,from=version \ set -x; xx-go build -ldflags "$(cat /tmp/.ldflags) ${LDFLAGS}" -o /usr/bin/buildx ./cmd/buildx && \ xx-verify --static /usr/bin/buildx -FROM buildx-build AS test +FROM build AS test RUN --mount=type=bind,target=. \ --mount=type=cache,target=/root/.cache \ --mount=type=cache,target=/go/pkg/mod \ @@ -44,13 +45,13 @@ FROM scratch AS test-coverage COPY --from=test /tmp/coverage.txt /coverage.txt FROM scratch AS binaries-unix -COPY --from=buildx-build /usr/bin/buildx / +COPY --from=build /usr/bin/buildx / FROM binaries-unix AS binaries-darwin FROM binaries-unix AS binaries-linux FROM scratch AS binaries-windows -COPY --from=buildx-build /usr/bin/buildx /buildx.exe +COPY --from=build /usr/bin/buildx /buildx.exe FROM binaries-$TARGETOS AS binaries @@ -59,12 +60,44 @@ FROM --platform=$BUILDPLATFORM alpine AS releaser WORKDIR /work ARG TARGETPLATFORM RUN --mount=from=binaries \ - --mount=type=bind,source=/tmp/.version,target=/tmp/.version,from=buildx-version \ + --mount=type=bind,source=/tmp/.version,target=/tmp/.version,from=version \ mkdir -p /out && cp buildx* "/out/buildx-$(cat /tmp/.version).$(echo $TARGETPLATFORM | sed 's/\//-/g')$(ls buildx* | sed -e 's/^buildx//')" FROM scratch AS release COPY --from=releaser /out/ / +# Pkg +FROM --platform=$BUILDPLATFORM goreleaser/nfpm:${NFPM_VERSION} AS nfpm +FROM --platform=$BUILDPLATFORM alpine AS build-pkg +RUN apk add --no-cache bash file git +WORKDIR /build +COPY --from=xx / / +COPY --from=build /usr/bin/buildx /usr/bin/buildx +ARG TARGETPLATFORM +ARG PKG=deb +RUN --mount=type=bind,source=./hack/nfpm.yml,target=/tmp/nfpm.yml \ + --mount=from=nfpm,source=/usr/local/bin/nfpm,target=/usr/bin/nfpm \ + --mount=type=bind,source=/tmp/.version,target=/tmp/.version,from=version < +description: Docker Buildx plugin extends build capabilities with BuildKit. +vendor: Docker, Inc +homepage: https://github.com/docker/buildx +license: Apache-2.0 +#changelog: "changelog.yaml" +disable_globbing: true + +#depends: +# - docker-ce-cli + +contents: + - src: /usr/bin/buildx + dst: /usr/libexec/docker/cli-plugins/docker-buildx + +rpm: + group: Tools/Docker + #summary: Explicit Summary for Sample Package + compression: xz + #signature: + #key_file: key.gpg + #key_id: bc8acdd415bd80b3 + +deb: + compression: xz + #signature: + #key_file: key.gpg + #type: origin + #key_id: bc8acdd415bd80b3 + +apk: + #signature: + #key_file: key.gpg + #key_name: origin + #key_id: ignored