Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 5a4c711

Browse files
committedMar 7, 2022
ci: build multi arch images with buildx
1 parent 23686dd commit 5a4c711

File tree

3 files changed

+42
-8
lines changed

3 files changed

+42
-8
lines changed
 

‎.github/workflows/build_image.yml

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: Build Image
2+
3+
on:
4+
push:
5+
branches:
6+
- 'master'
7+
tags:
8+
- "*"
9+
10+
jobs:
11+
bake:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- name: Checkout
15+
uses: actions/checkout@v2
16+
- name: Set up QEMU
17+
uses: docker/setup-qemu-action@v1
18+
- name: Set up Docker Buildx
19+
uses: docker/setup-buildx-action@v1
20+
with:
21+
buildkitd-flags: --debug
22+
config-inline: |
23+
[registry."docker.io"]
24+
mirrors = ["mirror.gcr.io"]
25+
- name: Build image
26+
run: |
27+
make docker
28+
- name: Pubish to Dockerhub
29+
if: ${{ startsWith(github.ref, 'refs/tags/') }}
30+
run: |
31+
make release

‎Dockerfile

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
1-
FROM golang:1.16.0 AS BUILDER
1+
FROM --platform=$TARGETPLATFORM golang:1.16.0 AS BUILDER
2+
3+
ARG TARGETPLATFORM
4+
ARG TARGETARCH
5+
ARG BUILDPLATFORM
6+
27
WORKDIR /go/src/github.com/jtblin/kube2iam
38
ENV ARCH=linux
49
ENV CGO_ENABLED=0
510
COPY . ./
611
RUN make setup && make build
712

8-
FROM alpine:3.14.3
13+
FROM --platform=$TARGETPLATFORM alpine:3.14.3
914
RUN apk --no-cache add \
1015
ca-certificates \
1116
iptables

‎Makefile

+4-6
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ GIT_HASH := $$(git rev-parse --short HEAD)
1010
GOBUILD_VERSION_ARGS := -ldflags "-s -X $(VERSION_VAR)=$(REPO_VERSION) -X $(GIT_VAR)=$(GIT_HASH) -X $(BUILD_DATE_VAR)=$(BUILD_DATE)"
1111
# useful for other docker repos
1212
DOCKER_REPO ?= jtblin
13-
CPU_ARCH ?= amd64
14-
IMAGE_NAME := $(DOCKER_REPO)/$(BINARY_NAME)-$(CPU_ARCH)
13+
CPU_ARCH ?= linux/arm64/v8,linux/amd64
14+
IMAGE_NAME := $(DOCKER_REPO)/$(BINARY_NAME)
1515
MANIFEST_NAME := $(DOCKER_REPO)/$(BINARY_NAME)
1616
ARCH ?= darwin
1717
GOLANGCI_LINT_VERSION ?= v1.23.8
@@ -74,16 +74,14 @@ check-all:
7474
travis-checks: build test-race check bench-race
7575

7676
docker:
77-
docker build -t $(IMAGE_NAME):$(GIT_HASH) . $(DOCKER_BUILD_FLAGS)
77+
docker buildx build --progress=plain --platform $(CPU_ARCH) -t $(IMAGE_NAME):$(GIT_HASH) . $(DOCKER_BUILD_FLAGS)
7878

7979
docker-dev: docker
8080
docker tag $(IMAGE_NAME):$(GIT_HASH) $(IMAGE_NAME):dev
8181
docker push $(IMAGE_NAME):dev
8282

8383
release: check test docker
84-
docker push $(IMAGE_NAME):$(GIT_HASH)
85-
docker tag $(IMAGE_NAME):$(GIT_HASH) $(IMAGE_NAME):$(REPO_VERSION)
86-
docker push $(IMAGE_NAME):$(REPO_VERSION)
84+
docker buildx build --push --progress=plain --platform $(CPU_ARCH) -t $(IMAGE_NAME):$(GIT_HASH) . $(DOCKER_BUILD_FLAGS)
8785
ifeq (, $(findstring -rc, $(REPO_VERSION)))
8886
docker tag $(IMAGE_NAME):$(GIT_HASH) $(IMAGE_NAME):latest
8987
docker push $(IMAGE_NAME):latest

0 commit comments

Comments
 (0)
Please sign in to comment.