1
+ # syntax=docker/dockerfile:1
2
+
3
+ ARG ALPINE_IMAGE=alpine:3.17.0
4
+
5
+ FROM ${ALPINE_IMAGE} as args
6
+ ARG HELM_VERSION=v3.10.2
7
+ ARG KUSTOMIZE_VERSION=v4.5.7
8
+
9
+ FROM args as args-amd64
10
+ ARG HELM_SHA256SUM="2315941a13291c277dac9f65e75ead56386440d3907e0540bf157ae70f188347"
11
+ ARG KUSTOMIZE_SHA256SUM="701e3c4bfa14e4c520d481fdf7131f902531bfc002cb5062dcf31263a09c70c9"
12
+
13
+ FROM args as args-arm64
14
+ ARG HELM_SHA256SUM="57fa17b6bb040a3788116557a72579f2180ea9620b4ee8a9b7244e5901df02e4"
15
+ ARG KUSTOMIZE_SHA256SUM="65665b39297cc73c13918f05bbe8450d17556f0acd16242a339271e14861df67"
16
+
17
+ # FROM args as args-arm
18
+ # ARG HELM_SHA256SUM="25af344f46348958baa1c758cdf3b204ede3ddc483be1171ed3738d47efd0aae"
19
+
20
+ FROM --platform=$BUILDPLATFORM args-${TARGETARCH} as downloader
21
+
22
+ ARG TARGETPLATFORM
23
+ ARG BUILDPLATFORM
24
+ ARG TARGETARCH
25
+
26
+ RUN apk update && apk add curl
27
+
28
+ RUN curl --location "https://get.helm.sh/helm-${HELM_VERSION}-linux-${TARGETARCH}.tar.gz" > helm.tar.gz && \
29
+ echo "${HELM_SHA256SUM} helm.tar.gz" | sha256sum && \
30
+ tar xzvf helm.tar.gz && \
31
+ chmod +x /linux-${TARGETARCH}/helm && \
32
+ mv /linux-${TARGETARCH}/helm /usr/bin/helm
33
+
34
+ RUN curl --location "https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2F${KUSTOMIZE_VERSION}/kustomize_${KUSTOMIZE_VERSION}_linux_${TARGETARCH}.tar.gz" > kustomize.tar.gz && \
35
+ echo "${KUSTOMIZE_SHA256SUM} kustomize.tar.gz" | sha256sum && \
36
+ tar xzvf kustomize.tar.gz && \
37
+ chmod +x kustomize && \
38
+ mv kustomize /usr/bin/kustomize
39
+
40
+ FROM golang:1.19-alpine as builder
41
+ ARG TARGETARCH
42
+ ARG TARGETPLATFORM
43
+ WORKDIR /kube-score
44
+ COPY go.mod go.sum ./
45
+ RUN go mod download
46
+ COPY . .
47
+
48
+ ARG KUBE_SCORE_VERSION
49
+ ARG KUBE_SCORE_COMMIT
50
+ ARG KUBE_SCORE_DATE
51
+
52
+ RUN --mount=type=cache,target=/root/.cache/go-build \
53
+ CGO_ENABLED=0 \
54
+ go build \
55
+ -ldflags="-X 'main.version=${KUBE_SCORE_VERSION}-docker-${TARGETPLATFORM}' -X 'main.commit=${KUBE_SCORE_COMMIT}' -X 'main.date=${KUBE_SCORE_DATE}'" \
56
+ -o /usr/bin/kube-score \
57
+ ./cmd/kube-score
58
+
59
+ FROM ${ALPINE_IMAGE} as runner
60
+ RUN apk update && \
61
+ apk upgrade && \
62
+ apk add bash ca-certificates
63
+ COPY --from=downloader /usr/bin/helm /usr/bin/helm
64
+ COPY --from=downloader /usr/bin/kustomize /usr/bin/kustomize
65
+ COPY --from=builder /usr/bin/kube-score /kube-score
66
+ COPY --from=builder /usr/bin/kube-score /usr/bin/kube-score
67
+
68
+ # Dry runs
69
+ RUN /kube-score version && helm version && kustomize version
70
+
71
+ WORKDIR /project
72
+ ENTRYPOINT ["/kube-score" ]
0 commit comments