Skip to content

Commit

Permalink
feat: Enable multi-arch builds
Browse files Browse the repository at this point in the history
AMD64, ARM64 and ARMv7 for now.
The Tyk plugin depends on the tykio/tyk-plugin-compiler image which does
not support any other architecture than AMD64 for now.
See TykTechnologies/tyk-build-env#4

Signed-off-by: Felix Kaechele <[email protected]>
  • Loading branch information
kaechele committed Feb 23, 2022
1 parent c39a242 commit 59d1850
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 10 deletions.
7 changes: 7 additions & 0 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ jobs:
with:
submodules: true

- name: Set up QEMU
uses: docker/setup-qemu-action@v1

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1

Expand All @@ -40,6 +43,7 @@ jobs:
uses: docker/build-push-action@v2
with:
context: .
platforms: linux/amd64,linux/arm64,linux/arm/v7
tags: ghcr.io/apiclarity/apiclarity:latest
file: Dockerfile
push: true
Expand All @@ -54,6 +58,7 @@ jobs:
uses: docker/build-push-action@v2
with:
context: plugins
platforms: linux/amd64,linux/arm64,linux/arm/v7
tags: ghcr.io/apiclarity/kong-plugin:latest
file: plugins/Dockerfile.kong
push: true
Expand All @@ -71,6 +76,7 @@ jobs:
uses: docker/build-push-action@v2
with:
context: plugins
platforms: linux/amd64 # tykio/tyk-plugin-compiler does not currently support other architectures
tags: ghcr.io/apiclarity/tyk-plugin-v3.2.2:latest
file: plugins/Dockerfile.tyk.v3.2.2
push: true
Expand All @@ -81,6 +87,7 @@ jobs:
uses: docker/build-push-action@v2
with:
context: plugins
platforms: linux/amd64,linux/arm64,linux/arm/v7
tags: ghcr.io/apiclarity/passive-taper:latest
file: plugins/Dockerfile.taper
push: true
Expand Down
7 changes: 7 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@ jobs:
git tag --annotate --message "Tag for release $tag" "$tag"
git push origin "refs/tags/$tag"
- name: Set up QEMU
uses: docker/setup-qemu-action@v1

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1

Expand All @@ -107,6 +110,7 @@ jobs:
uses: docker/build-push-action@v2
with:
context: .
platforms: linux/amd64,linux/arm64,linux/arm/v7
tags: ghcr.io/apiclarity/apiclarity:${{ github.event.inputs.version }}
file: Dockerfile
push: true
Expand All @@ -121,6 +125,7 @@ jobs:
uses: docker/build-push-action@v2
with:
context: plugins
platforms: linux/amd64,linux/arm64,linux/arm/v7
tags: ghcr.io/apiclarity/kong-plugin:${{ github.event.inputs.version }}
file: plugins/Dockerfile.kong
push: true
Expand All @@ -138,6 +143,7 @@ jobs:
uses: docker/build-push-action@v2
with:
context: plugins
platforms: linux/amd64,linux/arm64,linux/arm/v7
tags: ghcr.io/apiclarity/tyk-plugin-v3.2.2:${{ github.event.inputs.version }}
file: plugins/Dockerfile.tyk.v3.2.2
push: true
Expand All @@ -152,6 +158,7 @@ jobs:
uses: docker/build-push-action@v2
with:
context: plugins
platforms: linux/amd64,linux/arm64,linux/arm/v7
tags: ghcr.io/apiclarity/passive-taper:${{ github.event.inputs.version }}
file: plugins/Dockerfile.taper
push: true
Expand Down
7 changes: 4 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ RUN npm i
RUN npm run build


FROM golang:1.16.6-alpine AS builder
FROM --platform=$BUILDPLATFORM golang:1.16.6-alpine AS builder

RUN apk add --update --no-cache gcc g++
RUN apk add --no-cache build-base

WORKDIR /build
COPY api ./api
Expand All @@ -25,7 +25,8 @@ ARG COMMIT_HASH

# Copy and build backend code
COPY backend .
RUN go build -ldflags="-s -w \
ARG TARGETOS TARGETARCH
RUN GOOS=$TARGETOS GOARCH=$TARGETARCH go build -ldflags="-s -w \
-X 'github.com/apiclarity/apiclarity/backend/pkg/version.Version=${VERSION}' \
-X 'github.com/apiclarity/apiclarity/backend/pkg/version.CommitHash=${COMMIT_HASH}' \
-X 'github.com/apiclarity/apiclarity/backend/pkg/version.BuildTimestamp=${BUILD_TIMESTAMP}'" -o backend ./cmd/backend/main.go
Expand Down
7 changes: 4 additions & 3 deletions plugins/Dockerfile.kong
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
FROM golang:1.16.6-alpine AS builder
FROM --platform=$BUILDPLATFORM golang:1.16.6-alpine AS builder

## Note: this Dockerfile will only be built from the plugins context

RUN apk add --update --no-cache gcc g++
RUN apk add --no-cache build-base

WORKDIR /plugins
COPY api ./api
Expand All @@ -22,7 +22,8 @@ RUN go mod download
COPY gateway/kong .

# Build the plugin.
RUN go build -o bin/kong-plugin plugin.go
ARG TARGETOS TARGETARCH
RUN GOOS=$TARGETOS GOARCH=$TARGETARCH go build -o bin/kong-plugin plugin.go

FROM busybox
COPY --from=builder ["/plugins/gateway/kong/bin/kong-plugin", "/kong-plugin"]
9 changes: 5 additions & 4 deletions plugins/Dockerfile.taper
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
FROM golang:1.16.6-alpine AS builder
FROM --platform=$BUILDPLATFORM golang:1.16.6-alpine AS builder

# Set necessary environment variables needed for our image.
ENV CGO_ENABLED=1 GOOS=linux GOARCH=amd64
ARG TARGETOS TARGETARCH
ENV CGO_ENABLED=1 GOOS=$TARGETOS GOARCH=$TARGETARCH

RUN apk add libpcap-dev gcc g++ make bash
RUN apk add --no-cache build-base binutils-gold libpcap-dev

WORKDIR /plugins

Expand All @@ -27,7 +28,7 @@ RUN go build -buildmode=plugin -o ../http.so .

FROM alpine:3.14

RUN apk add bash libpcap-dev tcpdump
RUN apk add --no-cache bash libpcap tcpdump
WORKDIR /app

# Copy binary and config files from /build to root folder of scratch container.
Expand Down

0 comments on commit 59d1850

Please sign in to comment.