diff --git a/.gitignore b/.gitignore index b616f39b..e1087be9 100644 --- a/.gitignore +++ b/.gitignore @@ -5,5 +5,4 @@ /bin /dist /site -/.goreleaser.yml /coverage.txt diff --git a/Dockerfile b/Dockerfile index 1a15ae31..e6491105 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,35 +1,34 @@ # syntax=docker/dockerfile:1.2 ARG GO_VERSION=1.15 -ARG GORELEASER_VERSION=0.157.0 +FROM --platform=$BUILDPLATFORM crazymax/goreleaser-xx:latest AS goreleaser-xx FROM --platform=$BUILDPLATFORM golang:${GO_VERSION}-alpine AS base -ARG GORELEASER_VERSION -RUN apk add --no-cache ca-certificates curl gcc file git linux-headers musl-dev tar -RUN wget -qO- https://github.com/goreleaser/goreleaser/releases/download/v${GORELEASER_VERSION}/goreleaser_Linux_x86_64.tar.gz | tar -zxvf - goreleaser \ - && mv goreleaser /usr/local/bin/goreleaser +COPY --from=goreleaser-xx / / +RUN apk add --no-cache ca-certificates gcc file git linux-headers musl-dev tar WORKDIR /src -FROM base AS gomod -RUN --mount=type=bind,target=.,rw \ - --mount=type=cache,target=/go/pkg/mod \ - go mod tidy && go mod download - -FROM gomod AS build +FROM base AS build ARG TARGETPLATFORM -ARG TARGETOS -ARG TARGETARCH -ARG TARGETVARIANT ARG GIT_REF RUN --mount=type=bind,target=/src,rw \ --mount=type=cache,target=/root/.cache/go-build \ --mount=target=/go/pkg/mod,type=cache \ - ./hack/goreleaser.sh "diun" "/out" + goreleaser-xx --debug \ + --name "diun" \ + --dist "/out" \ + --hooks="go mod tidy" \ + --hooks="go mod download" \ + --main="./cmd/main.go" \ + --ldflags="-s -w -X 'main.version={{.Version}}'" \ + --files="CHANGELOG.md" \ + --files="LICENSE" \ + --files="README.md" FROM scratch AS artifacts COPY --from=build /out/*.tar.gz / COPY --from=build /out/*.zip / -FROM --platform=$TARGETPLATFORM alpine +FROM alpine LABEL maintainer="CrazyMax" RUN apk --update --no-cache add \ diff --git a/hack/goreleaser.sh b/hack/goreleaser.sh deleted file mode 100755 index c0563cad..00000000 --- a/hack/goreleaser.sh +++ /dev/null @@ -1,161 +0,0 @@ -#!/usr/bin/env sh - -APPNAME=$1 -DISTPATH=$2 - -: ${TARGETPLATFORM=} -: ${TARGETOS=} -: ${TARGETARCH=} -: ${TARGETVARIANT=} -: ${CGO_ENABLED=} -: ${GOARCH=} -: ${GOOS=} -: ${GOARM=} -: ${GOMIPS=} -: ${GOBIN=} -: ${GIT_REF=} - -set -eu - -usage() { - echo "usage: $0 " - exit 1 -} - -if [ -z "$APPNAME" ] || [ -z "$DISTPATH" ]; then - usage -fi - -if [ -n "$TARGETPLATFORM" ]; then - os="$(echo $TARGETPLATFORM | cut -d"/" -f1)" - arch="$(echo $TARGETPLATFORM | cut -d"/" -f2)" - if [ -n "$os" ] && [ -n "$arch" ]; then - export GOOS="$os" - export GOARCH="$arch" - if [ "$arch" = "arm" ]; then - case "$(echo $TARGETPLATFORM | cut -d"/" -f3)" in - "v5") - export GOARM="5" - ;; - "v6") - export GOARM="6" - ;; - *) - export GOARM="7" - ;; - esac - fi - fi -fi - -if [ -n "$TARGETOS" ]; then - export GOOS="$TARGETOS" -fi - -if [ -n "$TARGETARCH" ]; then - export GOARCH="$TARGETARCH" -fi - -if [ "$TARGETARCH" = "arm" ]; then - if [ -n "$TARGETVARIANT" ]; then - case "$TARGETVARIANT" in - "v5") - export GOARM="5" - ;; - "v6") - export GOARM="6" - ;; - *) - export GOARM="7" - ;; - esac - else - export GOARM="7" - fi -fi - -if case $TARGETARCH in "mips"*) true;; *) false;; esac; then - if [ -n "$TARGETVARIANT" ]; then - export GOMIPS="$TARGETVARIANT" - else - export GOMIPS="hardfloat" - fi -fi - -if [ "$GOOS" = "wasi" ]; then - export GOOS="js" -fi - -if [ -z "$GOBIN" ] && [ -n "$GOPATH" ] && [ -n "$GOARCH" ] && [ -n "$GOOS" ]; then - export PATH=${GOPATH}/bin/${GOOS}_${GOARCH}:${PATH} -fi - -cat > ./.goreleaser.yml </dev/null 2>&1; then - gitDirty="false" -fi -echo "git dirty: ${gitDirty}" - -flags="" -if [ "$gitDirty" = "true" ]; then - flags="--snapshot" -fi - -set -x -/usr/local/bin/goreleaser release $flags