Skip to content

Commit 2c08121

Browse files
committed
builds: multi-arch docker image
1 parent 94b01e0 commit 2c08121

File tree

3 files changed

+87
-37
lines changed

3 files changed

+87
-37
lines changed

.goreleaser.yml

-37
Original file line numberDiff line numberDiff line change
@@ -24,43 +24,6 @@ archives:
2424
files:
2525
- LICENSE
2626

27-
dockers:
28-
- goos: linux
29-
goarch: amd64
30-
ids:
31-
- kube-score
32-
image_templates:
33-
- "zegl/kube-score:{{ .Tag }}"
34-
- "zegl/kube-score:latest"
35-
dockerfile: cmd/kube-score/Dockerfile
36-
37-
- goos: linux
38-
goarch: amd64
39-
ids:
40-
- kube-score
41-
image_templates:
42-
- "zegl/kube-score:{{ .Tag }}-helm"
43-
- "zegl/kube-score:latest-helm"
44-
dockerfile: cmd/kube-score/helm.Dockerfile
45-
46-
- goos: linux
47-
goarch: amd64
48-
ids:
49-
- kube-score
50-
image_templates:
51-
- "zegl/kube-score:{{ .Tag }}-helm3"
52-
- "zegl/kube-score:latest-helm3"
53-
dockerfile: cmd/kube-score/helm3.Dockerfile
54-
55-
- goos: linux
56-
goarch: amd64
57-
ids:
58-
- kube-score
59-
image_templates:
60-
- "zegl/kube-score:{{ .Tag }}-kustomize"
61-
- "zegl/kube-score:latest-kustomize"
62-
dockerfile: cmd/kube-score/kustomize.Dockerfile
63-
6427
checksum:
6528
name_template: 'checksums.txt'
6629

Dockerfile

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
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"]

hack/release-docker.sh

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/bin/bash
2+
3+
#VERSION="$(git describe --tags --abbrev=0)"
4+
VERSION="v1.16.0-dev"
5+
6+
docker buildx build \
7+
--build-arg KUBE_SCORE_VERSION=${VERSION} \
8+
--build-arg "KUBE_SCORE_COMMIT=$(git rev-parse HEAD)" \
9+
--build-arg "KUBE_SCORE_DATE=$(date -Iseconds)" \
10+
--platform linux/arm64 \
11+
--platform linux/amd64 \
12+
-t zegl/kube-score:${VERSION} \
13+
--push \
14+
--target runner \
15+
.

0 commit comments

Comments
 (0)