Skip to content

Commit 0d1606f

Browse files
committed
Build and push both linux/amd64,linux/arm64 to Docker Hub on tag / release
1 parent 5fa1210 commit 0d1606f

1 file changed

Lines changed: 22 additions & 12 deletions

File tree

.github/workflows/unit_tests.yaml

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,25 @@ jobs:
1818
- name: Checkout repository
1919
uses: actions/checkout@v6
2020

21+
# Add support for more platforms on release builds.
22+
- name: Set up QEMU
23+
if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'release'
24+
uses: docker/setup-qemu-action@v4
25+
2126
- name: Set up Docker Buildx
22-
uses: docker/setup-buildx-action@v3
27+
uses: docker/setup-buildx-action@v4
2328

2429
- name: Extract GHCR metadata
2530
id: ghcr_meta
26-
if: github.event_name == 'push' && github.repository == 'koreader/koreader-sync-server'
31+
if: (github.event_name == 'push' || github.event_name == 'release') && github.repository == 'koreader/koreader-sync-server'
2732
uses: docker/metadata-action@v5
2833
with:
2934
images: ghcr.io/${{ github.repository_owner }}/kosync
3035
tags: |
3136
type=raw,value=latest,enable={{is_default_branch}}
3237
type=ref,event=tag
3338
type=sha,prefix=sha-
39+
type=raw,value=${{ github.event.release.tag_name }},enable=${{ github.event_name == 'release' }}
3440
3541
- name: Extract Docker Hub metadata
3642
id: dockerhub_meta
@@ -66,15 +72,15 @@ jobs:
6672
docker exec kosync-test /app/koreader-sync-server/scripts/healthcheck.sh
6773
6874
- name: Log in to GitHub Container Registry
69-
if: github.event_name == 'push' && github.repository == 'koreader/koreader-sync-server'
75+
if: (github.event_name == 'push' || github.event_name == 'release') && github.repository == 'koreader/koreader-sync-server'
7076
uses: docker/login-action@v4
7177
with:
7278
registry: ghcr.io
7379
username: ${{ github.actor }}
7480
password: ${{ secrets.GITHUB_TOKEN }}
7581

7682
- name: Push GHCR image
77-
if: github.event_name == 'push' && github.repository == 'koreader/koreader-sync-server'
83+
if: github.event_name == 'push' && !startsWith(github.ref, 'refs/tags/') && github.repository == 'koreader/koreader-sync-server'
7884
run: |
7985
while IFS= read -r tag; do
8086
docker tag koreader/kosync:test "$tag"
@@ -90,12 +96,16 @@ jobs:
9096
username: frenzie
9197
password: ${{ secrets.DOCKERHUB_TOKEN }}
9298

93-
- name: Push Docker Hub image
99+
- name: Build and push multi-platform release images
94100
if: (startsWith(github.ref, 'refs/tags/') || github.event_name == 'release') && github.repository == 'koreader/koreader-sync-server'
95-
run: |
96-
while IFS= read -r tag; do
97-
docker tag koreader/kosync:test "$tag"
98-
docker push "$tag"
99-
done <<'EOF'
100-
${{ steps.dockerhub_meta.outputs.tags }}
101-
EOF
101+
uses: docker/build-push-action@v5
102+
with:
103+
context: .
104+
push: true
105+
platforms: linux/amd64,linux/arm64
106+
labels: ${{ steps.ghcr_meta.outputs.labels || steps.dockerhub_meta.outputs.labels }}
107+
tags: |
108+
${{ steps.ghcr_meta.outputs.tags }}
109+
${{ steps.dockerhub_meta.outputs.tags }}
110+
cache-from: type=gha
111+
cache-to: type=gha,mode=max

0 commit comments

Comments
 (0)