| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- # syntax = docker/dockerfile:experimental
- ARG GO_VERSION=1.14.4-alpine
- ARG ALPINE_PKG_DOCKER_VERSION=19.03.11-r0
- ARG GOLANGCI_LINT_VERSION=v1.27.0-alpine
- FROM --platform=${BUILDPLATFORM} golang:${GO_VERSION} AS base
- WORKDIR /ecs-plugin
- ENV GO111MODULE=on
- ARG ALPINE_PKG_DOCKER_VERSION
- RUN apk add --no-cache \
- docker=${ALPINE_PKG_DOCKER_VERSION} \
- make \
- build-base
- COPY go.* .
- RUN --mount=type=cache,target=/go/pkg/mod \
- go mod download
- FROM base AS make-plugin
- ARG TARGETOS
- ARG TARGETARCH
- ARG COMMIT
- ARG TAG
- COPY . .
- RUN --mount=type=cache,target=/root/.cache/go-build \
- --mount=type=cache,target=/go/pkg/mod \
- GOOS=${TARGETOS} \
- GOARCH=${TARGETARCH} \
- make -f builder.Makefile build
- FROM base AS make-cross
- ARG COMMIT
- ARG TAG
- COPY . .
- RUN --mount=type=cache,target=/root/.cache/go-build \
- --mount=type=cache,target=/go/pkg/mod \
- make -f builder.Makefile cross
- FROM scratch AS build
- COPY --from=make-plugin /ecs-plugin/dist/docker-ecs .
- FROM scratch AS cross
- COPY --from=make-cross /ecs-plugin/dist/* .
- FROM make-plugin AS test
- RUN --mount=type=cache,target=/root/.cache/go-build \
- --mount=type=cache,target=/go/pkg/mod \
- make -f builder.Makefile test
- FROM golangci/golangci-lint:${GOLANGCI_LINT_VERSION} AS lint-base
- FROM base AS lint
- COPY --from=lint-base /usr/bin/golangci-lint /usr/bin/golangci-lint
- RUN --mount=target=. \
- --mount=type=cache,target=/root/.cache/go-build \
- --mount=type=cache,target=/go/pkg/mod \
- --mount=type=cache,target=/root/.cache/golangci-lint \
- make -f builder.Makefile lint
|