Skip to content

Commit def3b4d

Browse files
committed
ci: build multi arch images with buildx
1 parent 23686dd commit def3b4d

File tree

3 files changed

+40
-8
lines changed

3 files changed

+40
-8
lines changed

.github/workflows/build_image.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: Build Image
2+
3+
on:
4+
push:
5+
branches:
6+
- 'master'
7+
8+
jobs:
9+
bake:
10+
runs-on: ubuntu-latest
11+
steps:
12+
-
13+
name: Checkout
14+
uses: actions/checkout@v2
15+
-
16+
name: Set up QEMU
17+
uses: docker/setup-qemu-action@v1
18+
-
19+
name: Set up Docker Buildx
20+
uses: docker/setup-buildx-action@v1
21+
with:
22+
buildkitd-flags: --debug
23+
config-inline: |
24+
[registry."docker.io"]
25+
mirrors = ["mirror.gcr.io"]
26+
-
27+
name: Build and push
28+
run: |
29+
make docker

Dockerfile

Lines changed: 7 additions & 2 deletions
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

Lines changed: 4 additions & 6 deletions
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)