Skip to content

Commit c1f6edb

Browse files
Simplify ARM64 Docker image cross-compilation
1 parent 969b1b7 commit c1f6edb

File tree

1 file changed

+9
-61
lines changed

1 file changed

+9
-61
lines changed

.github/workflows/build.yml

Lines changed: 9 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -76,22 +76,16 @@ jobs:
7676

7777
build-docker:
7878
runs-on: ubuntu-latest
79-
strategy:
80-
matrix:
81-
platform:
82-
- linux/arm64
83-
- linux/amd64
8479

8580
steps:
8681
- name: Checkout code
87-
uses: actions/checkout@v3
82+
uses: actions/checkout@v4
8883

89-
- name: Set up QEMU
90-
uses: docker/setup-qemu-action@v2
91-
if: ${{ matrix.platform != 'linux/amd64' }}
84+
- name: Set up QEMU for cross-compilation
85+
uses: docker/setup-qemu-action@v3
9286

9387
- name: Set up Docker Buildx
94-
uses: docker/setup-buildx-action@v2
88+
uses: docker/setup-buildx-action@v3
9589

9690
- name: Acquire Docker image metadata
9791
id: metadata
@@ -100,63 +94,17 @@ jobs:
10094
images: valeriansaliou/sonic
10195

10296
- name: Login to Docker Hub
103-
uses: docker/login-action@v2
97+
uses: docker/login-action@v3
10498
with:
10599
username: ${{ secrets.DOCKERHUB_USERNAME }}
106100
password: ${{ secrets.DOCKERHUB_TOKEN }}
107101

108-
- name: Build and push by digest
102+
- name: Build and push Docker image
109103
uses: docker/build-push-action@v4
110104
id: build
111105
with:
112106
context: .
107+
platforms: linux/amd64,linux/arm64
108+
tags: ${{ steps.metadata.outputs.tags }}
113109
labels: ${{ steps.metadata.outputs.labels }}
114-
platforms: ${{ matrix.platform }}
115-
outputs: type=image,name=valeriansaliou/sonic,push-by-digest=true,name-canonical=true,push=true
116-
117-
- name: Export digests
118-
run: |
119-
mkdir -p /tmp/digests
120-
digest="${{ steps.build.outputs.digest }}"
121-
touch "/tmp/digests/${digest#sha256:}"
122-
123-
- name: Upload digests
124-
uses: actions/upload-artifact@v3
125-
with:
126-
name: docker-digests
127-
path: /tmp/digests/*
128-
if-no-files-found: error
129-
retention-days: 1
130-
131-
merge-docker:
132-
runs-on: ubuntu-latest
133-
needs:
134-
- build-docker
135-
136-
steps:
137-
- name: Download digests
138-
uses: actions/download-artifact@v3
139-
with:
140-
name: docker-digests
141-
path: /tmp/digests
142-
143-
- name: Set up Docker Buildx
144-
uses: docker/setup-buildx-action@v2
145-
146-
- name: Login to Docker Hub
147-
uses: docker/login-action@v2
148-
with:
149-
username: ${{ secrets.DOCKERHUB_USERNAME }}
150-
password: ${{ secrets.DOCKERHUB_TOKEN }}
151-
152-
- name: Extract metadata (tags, labels) for Docker
153-
id: meta
154-
uses: docker/metadata-action@v4
155-
with:
156-
images: valeriansaliou/sonic
157-
158-
- name: Create manifest list and push
159-
working-directory: /tmp/digests
160-
run: |
161-
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
162-
$(printf 'valeriansaliou/sonic@sha256:%s ' *)
110+
push: true

0 commit comments

Comments
 (0)