diff --git a/.github/workflows/dockerhub-latest-image.yml b/.github/workflows/dockerhub-latest-image.yml index 4c482d382..24bc2ff7e 100644 --- a/.github/workflows/dockerhub-latest-image.yml +++ b/.github/workflows/dockerhub-latest-image.yml @@ -12,6 +12,9 @@ jobs: if: ${{ github.repository == 'karmada-io/karmada' && github.ref == 'refs/heads/master' }} strategy: matrix: + arch: + - amd64 + - arm64 target: - karmada-controller-manager - karmada-scheduler @@ -46,4 +49,8 @@ jobs: - name: build and publish images env: VERSION: latest - run: make mp-image-${{ matrix.target }} + GOARCH: ${{ matrix.arch }} + # When we build binary for multiple platform, `go build` may be skipped as `$(SOURCES)` unchanged. + # So we clean the binary at first, and force to run `go build`. + # See https://github.com/karmada-io/karmada/pull/1649#issuecomment-1107959879 for more info. + run: make clean mp-image-${{ matrix.target }} diff --git a/.github/workflows/dockerhub-released-image.yml b/.github/workflows/dockerhub-released-image.yml index 0246f5716..e0209ed90 100644 --- a/.github/workflows/dockerhub-released-image.yml +++ b/.github/workflows/dockerhub-released-image.yml @@ -8,6 +8,9 @@ jobs: name: publish to DockerHub strategy: matrix: + arch: + - amd64 + - arm64 target: - karmada-controller-manager - karmada-scheduler @@ -42,4 +45,8 @@ jobs: - name: build and publish images env: VERSION: ${{ github.ref_name }} - run: make mp-image-${{ matrix.target }} + GOARCH: ${{ matrix.arch }} + # When we build binary for multiple platform, `go build` may be skipped as `$(SOURCES)` unchanged. + # So we clean the binary at first, and force to run `go build`. + # See https://github.com/karmada-io/karmada/pull/1649#issuecomment-1107959879 for more info. + run: make clean mp-image-${{ matrix.target }} diff --git a/Makefile b/Makefile index 90e942a93..bba8ab274 100644 --- a/Makefile +++ b/Makefile @@ -39,61 +39,61 @@ endif all: karmada-aggregated-apiserver karmada-controller-manager karmada-scheduler karmada-descheduler karmadactl kubectl-karmada karmada-webhook karmada-agent karmada-scheduler-estimator karmada-interpreter-webhook-example karmada-aggregated-apiserver: $(SOURCES) - CGO_ENABLED=0 GOOS=$(GOOS) go build \ + CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) go build \ -ldflags $(LDFLAGS) \ -o karmada-aggregated-apiserver \ cmd/aggregated-apiserver/main.go karmada-controller-manager: $(SOURCES) - CGO_ENABLED=0 GOOS=$(GOOS) go build \ + CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) go build \ -ldflags $(LDFLAGS) \ -o karmada-controller-manager \ cmd/controller-manager/controller-manager.go karmada-scheduler: $(SOURCES) - CGO_ENABLED=0 GOOS=$(GOOS) go build \ + CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) go build \ -ldflags $(LDFLAGS) \ -o karmada-scheduler \ cmd/scheduler/main.go karmada-descheduler: $(SOURCES) - CGO_ENABLED=0 GOOS=$(GOOS) go build \ + CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) go build \ -ldflags $(LDFLAGS) \ -o karmada-descheduler \ cmd/descheduler/main.go karmadactl: $(SOURCES) - CGO_ENABLED=0 GOOS=$(GOOS) go build \ + CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) go build \ -ldflags $(LDFLAGS) \ -o karmadactl \ cmd/karmadactl/karmadactl.go kubectl-karmada: $(SOURCES) - CGO_ENABLED=0 GOOS=$(GOOS) go build \ + CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) go build \ -ldflags $(LDFLAGS) \ -o kubectl-karmada \ cmd/kubectl-karmada/kubectl-karmada.go karmada-webhook: $(SOURCES) - CGO_ENABLED=0 GOOS=$(GOOS) go build \ + CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) go build \ -ldflags $(LDFLAGS) \ -o karmada-webhook \ cmd/webhook/main.go karmada-agent: $(SOURCES) - CGO_ENABLED=0 GOOS=$(GOOS) go build \ + CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) go build \ -ldflags $(LDFLAGS) \ -o karmada-agent \ cmd/agent/main.go karmada-scheduler-estimator: $(SOURCES) - CGO_ENABLED=0 GOOS=$(GOOS) go build \ + CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) go build \ -ldflags $(LDFLAGS) \ -o karmada-scheduler-estimator \ cmd/scheduler-estimator/main.go karmada-interpreter-webhook-example: $(SOURCES) - CGO_ENABLED=0 GOOS=$(GOOS) go build \ + CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) go build \ -ldflags $(LDFLAGS) \ -o karmada-interpreter-webhook-example \ examples/customresourceinterpreter/webhook/main.go