From dee20455eeb38a00f9a4cd965fdcd007b605b0d5 Mon Sep 17 00:00:00 2001 From: Enrico Candino Date: Fri, 21 Feb 2025 14:36:17 +0100 Subject: [PATCH] added multiarch support (#262) --- .github/workflows/build.yml | 3 ++ .github/workflows/release.yml | 3 ++ .goreleaser.yaml | 61 +++++++++++++++++++++++++++++++---- 3 files changed, 61 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9b025d73..b5a16aae 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,6 +21,9 @@ jobs: uses: actions/setup-go@v5 with: go-version-file: go.mod + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 - name: Run GoReleaser uses: goreleaser/goreleaser-action@v6 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a2f70bf7..845b938c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -35,6 +35,9 @@ jobs: with: go-version-file: go.mod + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: "Read secrets" uses: rancher-eio/read-vault-secrets@main if: github.repository_owner == 'rancher' diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 030ae95d..eb8bf365 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -67,29 +67,78 @@ archives: # REGISTRY=ghcr.io -> ghcr.io/rancher/k3k:latest:vX.Y.Z # dockers: - - id: k3k - use: docker + # k3k amd64 + - use: buildx + goarch: amd64 ids: - k3k - k3kcli dockerfile: "package/Dockerfile.k3k" skip_push: false image_templates: - - "{{- if .Env.REGISTRY }}{{ .Env.REGISTRY }}/{{ end }}{{ .Env.REPO }}:{{ .Tag }}" + - "{{- if .Env.REGISTRY }}{{ .Env.REGISTRY }}/{{ end }}{{ .Env.REPO }}:{{ .Tag }}-amd64" build_flag_templates: - "--build-arg=BIN_K3K=k3k" - "--build-arg=BIN_K3KCLI=k3kcli" + - "--pull" + - "--platform=linux/amd64" + + # k3k arm64 + - use: buildx + goarch: arm64 + ids: + - k3k + - k3kcli + dockerfile: "package/Dockerfile.k3k" + skip_push: false + image_templates: + - "{{- if .Env.REGISTRY }}{{ .Env.REGISTRY }}/{{ end }}{{ .Env.REPO }}:{{ .Tag }}-arm64" + build_flag_templates: + - "--build-arg=BIN_K3K=k3k" + - "--build-arg=BIN_K3KCLI=k3kcli" + - "--pull" + - "--platform=linux/arm64" - - id: k3k-kubelet - use: docker + # k3k-kubelet amd64 + - use: buildx + goarch: amd64 ids: - k3k-kubelet dockerfile: "package/Dockerfile.k3k-kubelet" skip_push: false image_templates: - - "{{- if .Env.REGISTRY }}{{ .Env.REGISTRY }}/{{ end }}{{ .Env.REPO }}-kubelet:{{ .Tag }}" + - "{{- if .Env.REGISTRY }}{{ .Env.REGISTRY }}/{{ end }}{{ .Env.REPO }}-kubelet:{{ .Tag }}-amd64" build_flag_templates: - "--build-arg=BIN_K3K_KUBELET=k3k-kubelet" + - "--pull" + - "--platform=linux/amd64" + + # k3k-kubelet arm64 + - use: buildx + goarch: arm64 + ids: + - k3k-kubelet + dockerfile: "package/Dockerfile.k3k-kubelet" + skip_push: false + image_templates: + - "{{- if .Env.REGISTRY }}{{ .Env.REGISTRY }}/{{ end }}{{ .Env.REPO }}-kubelet:{{ .Tag }}-arm64" + build_flag_templates: + - "--build-arg=BIN_K3K_KUBELET=k3k-kubelet" + - "--pull" + - "--platform=linux/arm64" + +docker_manifests: + # k3k + - name_template: "{{- if .Env.REGISTRY }}{{ .Env.REGISTRY }}/{{ end }}{{ .Env.REPO }}:{{ .Tag }}" + image_templates: + - "{{- if .Env.REGISTRY }}{{ .Env.REGISTRY }}/{{ end }}{{ .Env.REPO }}:{{ .Tag }}-amd64" + - "{{- if .Env.REGISTRY }}{{ .Env.REGISTRY }}/{{ end }}{{ .Env.REPO }}:{{ .Tag }}-arm64" + + # k3k-kubelet arm64 + - name_template: "{{- if .Env.REGISTRY }}{{ .Env.REGISTRY }}/{{ end }}{{ .Env.REPO }}-kubelet:{{ .Tag }}" + image_templates: + - "{{- if .Env.REGISTRY }}{{ .Env.REGISTRY }}/{{ end }}{{ .Env.REPO }}-kubelet:{{ .Tag }}-amd64" + - "{{- if .Env.REGISTRY }}{{ .Env.REGISTRY }}/{{ end }}{{ .Env.REPO }}-kubelet:{{ .Tag }}-arm64" changelog: sort: asc