Skip to content

Commit 76f09b1

Browse files
authored
Merge pull request #124 from brpaz/master
Add support for multi platform builds
2 parents 3c2516d + 7644666 commit 76f09b1

File tree

2 files changed

+54
-23
lines changed

2 files changed

+54
-23
lines changed

.github/workflows/release.yml

Lines changed: 36 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,48 @@ on:
44
release:
55
types: [published]
66

7+
permissions:
8+
contents: read
9+
packages: write
710
jobs:
811
build:
9-
1012
runs-on: ubuntu-latest
11-
1213
steps:
13-
- uses: actions/checkout@v1
14+
- uses: actions/checkout@v3
15+
1416
- name: Generate Docker Tag
1517
run: |
1618
echo ${{ github.ref }} | cut -d '/' -f 3 > DOCKER_TAG
17-
- name: Build and push container image
18-
run: |
19-
docker build --file build/Dockerfile.dist --tag ghcr.io/movetokube/postgres-operator:$(cat DOCKER_TAG) --tag movetokube/postgres-operator:$(cat DOCKER_TAG) .
20-
docker tag ghcr.io/movetokube/postgres-operator:$(cat DOCKER_TAG) ghcr.io/movetokube/postgres-operator:latest
21-
docker tag movetokube/postgres-operator:$(cat DOCKER_TAG) movetokube/postgres-operator:latest
22-
23-
docker login ghcr.io --username USERNAME --password ${{ secrets.GITHUB_TOKEN }}
24-
docker push ghcr.io/movetokube/postgres-operator:$(cat DOCKER_TAG)
25-
docker push ghcr.io/movetokube/postgres-operator:latest
26-
27-
docker login --username ${{ secrets.DOCKER_USER }} --password ${{ secrets.DOCKER_TOKEN }}
28-
docker push movetokube/postgres-operator:$(cat DOCKER_TAG)
29-
docker push movetokube/postgres-operator:latest
19+
echo "DOCKER_TAG=$(cat DOCKER_TAG)" >> $GITHUB_ENV
20+
21+
- name: Set up QEMU
22+
uses: docker/setup-qemu-action@v2
23+
24+
- name: Set up Docker Buildx
25+
uses: docker/setup-buildx-action@v2
26+
27+
- name: Login to Docker Hub
28+
uses: docker/login-action@v2
29+
with:
30+
username: ${{ secrets.DOCKER_USER }}
31+
password: ${{ secrets.DOCKER_TOKEN }}
3032

33+
- name: Login to GitHub Container Registry
34+
uses: docker/login-action@v2
35+
with:
36+
registry: ghcr.io
37+
username: ${{ github.repository_owner }}
38+
password: ${{ secrets.GITHUB_TOKEN }}
3139

40+
- name: Build and push
41+
uses: docker/build-push-action@v4
42+
with:
43+
context: .
44+
file: ./build/Dockerfile.dist
45+
platforms: linux/amd64,linux/arm64
46+
push: true
47+
tags: |
48+
ghcr.io/movetokube/postgres-operator:latest
49+
ghcr.io/movetokube/postgres-operator:${{ env.DOCKER_TAG }}
50+
movetokube/postgres-operator:${{ env.DOCKER_TAG }}
51+
movetokube/postgres-operator:latest

build/Dockerfile.dist

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,24 @@
1-
FROM golang:1.18-stretch
1+
# syntax=docker/dockerfile:1
2+
FROM --platform=${BUILDPLATFORM} golang:1.18-stretch AS build
23

3-
COPY . /go/src/github.com/movetokube/postgres-operator
4-
WORKDIR /go/src/github.com/movetokube/postgres-operator/cmd/manager
4+
ARG TARGETPLATFORM
5+
ARG BUILDPLATFORM
6+
ARG TARGETOS
7+
ARG TARGETARCH
58

6-
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /usr/local/bin/postgres-operator
9+
WORKDIR /src
10+
COPY go.mod go.sum ./
11+
RUN go mod download
712

13+
COPY . .
814

9-
FROM registry.access.redhat.com/ubi8/ubi-minimal:latest
15+
RUN --mount=target=. \
16+
--mount=type=cache,target=/root/.cache/go-build \
17+
--mount=type=cache,target=/go/pkg \
18+
CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} \
19+
go build -o /usr/local/bin/postgres-operator cmd/manager/main.go
20+
21+
FROM --platform=${TARGETPLATFORM} registry.access.redhat.com/ubi8/ubi-minimal:latest
1022

1123
ENV OPERATOR=/usr/local/bin/postgres-operator \
1224
USER_UID=1001 \
@@ -20,5 +32,4 @@ RUN /usr/local/bin/user_setup
2032

2133
ENTRYPOINT ["/usr/local/bin/entrypoint"]
2234

23-
USER ${USER_UID}
24-
35+
USER ${USER_UID}

0 commit comments

Comments
 (0)